2017-04-01 42 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); 
  • 可以省略使用<>钻石算子的通用类型;无需重复该信息
  • 除此之外:没有意义将集合类型放入您的变量名称中。只要说清楚“它不止一个”。重点是:也许你想稍后改变集合类型。相信我,你会厌倦重命名你所有的变量!
  • 返回作为参数进入的列表已经不是很好的做法。而且它也不是必需的 - 像你一样添加一些东西到列表中去,已经影响到了这个列表。要返回该列表,只会让您的界面更“复杂”,无法理解。
相关问题