2016-05-29 113 views
3

該方法(下)是List<String>類型,我用作參數的類是String。我在想,如果我鑄造的方式將工作:Casting List <String> to a 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

我把它放在粘貼箱裏,因爲課堂太長了。

+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; 
} 

我建議這一點,因爲你在循環elementString

+0

是的,更好,但它沒有迴應這個問題。 –

+0

@ShreeKrishna我認爲這會奏效!但是在列表 str被聲明的過程中出現錯誤。我將它改爲:**列表 str; **而不是 – Ani

+0

@Ani這是因爲你的一個可能不是java 8.所以你得到了這個警告。這很簡單。聲明,因爲IDE建議你。 –

1

如果LetterCounter類的定義如下:

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

} 

你並不需要在所有投。這是因爲Java允許協變返回類型。請看看What is a covariant return type?