2017-04-01 78 views
0

請,投球入桶重複在此之前,有憐憫和幫助一個Java「新手」 ......我的代碼是:的java:jGrasp未經檢查或不安全的操作

//at top of class 
List<String> faceStrList    = new ArrayList<String>(cardsPerSuit); 

於是,線路(在另一個法)使用有問題的另一種方法:

faceStrList = readInfo(cardValueFileStr, faceStrList); 

和問題的孩子:

public static List readInfo(String inputFile, List<String> dataArrayOfStr) 
{ 
    String word = 'dummy'; 
    dataArrayOfStr.add(word); 
    return dataArrayOfStr; 
} 

再次,請好看。

回答

0

你只需要告訴編譯器,你是返回字符串

public static List<String> readInfo(String inputFile, List<String> dataArrayOfStr) 
{ 
    String word = "dummy"; 
    dataArrayOfStr.add(word); 
    return dataArrayOfStr; 
} 

的列表的java.util.List接口是java.util.Collection的接口的子類型。它表示對象的有序列表,這意味着您可以按特定順序訪問List的元素,也可以通過索引訪問

您已經定義了faceStrList是String的列表。然後,您將任何類型的列表分配給變量。

它不會創建任何編譯器錯誤,但如果您可以指定將字符串列表返回給編譯器,那將會更好。

0

這裏:

public static List readInfo(

你有你的仿製藥 「正確」 所有的地方;但不是在聲明該方法時。您是省略返回列表的通用類型;因此返回原始類型(請參閱here以瞭解詳細信息)。這就是編譯器警告你的。

所以解決的方法就是做你在其他地方做同樣的事情,改變方法簽名

public static List<String> readInfo( 

並記錄在案:

List<String> faceStrList = new ArrayList<String>(cardsPerSuit); 

可以簡化像

List<String> faces = new ArrayList<>(cardsPerSuit); 
  • 可以省略使用<>鑽石算子的通用類型;無需重複該信息
  • 除此之外:沒有意義將集合類型放入您的變量名稱中。只要說清楚「它不止一個」。重點是:也許你想稍後改變集合類型。相信我,你會厭倦重命名你所有的變量!
  • 返回作爲參數進入的列表已經不是很好的做法。而且它也不是必需的 - 像你一樣添加一些東西到列表中去,已經影響到了這個列表。要返回該列表,只會讓您的界面更「複雜」,無法理解。
相關問題