java:jGrasp未经检查或不安全的操作

时间:2017-04-01 15:41:37

标签: java arraylist warnings unchecked

请在将这个放入重复的存储桶之前,请怜悯并帮助Java新手' ...我的代码是:

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

再次,请好心。

2 个答案:

答案 0 :(得分:0)

您只需告诉编译器您正在返回String

列表
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列表。然后,您将为变量分配任何类型的列表。

它不会创建任何编译器错误,但如果您可以指定将字符串列表返回给编译器,那会更好。

答案 1 :(得分:0)

下面:

public static List readInfo(

你得到了你的仿制品&#34;正确&#34;到处都是;但在宣布该方法时却没有。您忽略返回列表的泛型类型;因此返回原始类型(有关详细信息,请参阅here)。这就是编译器警告你的内容。

所以解决方案只是做与你在其他地方做同样的事情,并将方法签名改为

public static List<String> readInfo( 

记录:

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

可以简化为

List<String> faces = new ArrayList<>(cardsPerSuit);
  • 您可以使用<>菱形运算符省略泛型类型;无需重复该信息
  • 除此之外:集合类型放入变量名称中没有任何意义。只要弄清楚&#34;它不止一个&#34;。重点是:您可能希望稍后更改集合类型。相信我,你会厌倦重新命名所有变量!
  • 返回作为参数进入的列表并不是一个好的做法。并且它也不是必需的 - 向列表中添加一些内容,就像您已经影响了传入列表一样。要返回该列表只会使您的界面更加复杂&#34;了解。