2016-05-29 2 views
3

Метод (ниже) - это тип List<String>, а класс, который я использую в качестве параметра, - String. Мне было интересно, если путь, я литье будет работать:Листинг Листинг <String> к типу возврата строки

return (List<String>) subList; 

Это метод:

public List<String> getWords(String phrase) { 
    LetterCounter subList = new LetterCounter(phrase); 
    if (phrase == null) throw new IllegalArgumentException(); 
    for (String element : dict) { 
     if (subList.contains(element)) 
      subList.add(element); 
    } 
    return (List<String>) subList; 
}// End of getWords 

Этот URL указывает на LetterCounter класс:

http://pastebin.com/XbeUSvPx

I поместите его в папку вставки, потому что класс слишком длинный.

+1

Можете ли вы показать определение LetterCounter, пожалуйста? –

+0

Привет @JorgeCampos Я только что обновил его – Ani

ответ

2

Лучше создать новый экземпляр List<String> и добавления элемента строки в том, что, как,

public List<String> getWords(String phrase) { 
    LetterCounter subList = new LetterCounter(phrase); 
    if (phrase == null) throw new IllegalArgumentException(); 
    List<String> str = new List<>(); 
    for (String element : dict) { 
     if (subList.contains(element)) 
      str.add(element); 
    } 
    return str; 
} 

Я предлагаю это, потому что в цикле Ваш element является String.

+0

Да, это лучше, но он не отвечает на вопрос. –

+0

@ShreeKrishna Я думаю, что это сработает! Но была ошибка в том, как был объявлен список . Я изменил его на: ** Список str; ** вместо – Ani

+0

@Ani Это потому, что ваш может быть не java 8. Чтобы вы получили это предупреждение. Это просто. Заявите, что, как предлагает IDE. –

1

Если определение LetterCounter класса выглядит следующим образом:

public class LetterCounter extends ArrayList<String>{ 
     // implementation 

} 

Вам не нужно, чтобы бросить на все. Это связано с тем, что Java допускает ковариантный тип возврата. Посмотрите на What is a covariant return type?

Смежные вопросы