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



在将其放入重复存储桶之前,请怜悯并帮助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;
}

再次,请亲切地看着。

你只需要告诉编译器你正在返回一个字符串列表

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

java.util.List接口是java.util.Collection接口的子类型。它表示对象的有序列表,这意味着您可以按特定顺序访问列表的元素,也可以通过索引访问

您已经定义了faceStrList是一个字符串列表。然后,将任何类型的列表分配给变量。

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

在这里:

public static List readInfo(

你到处都是泛型"正确";但在声明该方法时却没有。您省了返回列表的泛型类型;从而返回原始类型(有关详细信息,请参阅此处)。这就是编译器警告您的内容。

因此,解决方案只是执行您在其他地方所做的相同操作,并将方法签名更改为

public static List<String> readInfo( 

并记录在案:

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

可以简化为:

List<String> faces = new ArrayList<>(cardsPerSuit);
  • 您可以使用<>菱形运算符省略泛型类型;无需重复该信息
  • 除此之外:将集合类型放入变量名称中是没有意义的。只要明确"它不止一个"。关键是:也许您以后想更改集合类型。相信我,你会厌倦重命名所有变量!
  • 返回已经作为参数出现的列表并不是一个好的做法。而且也不是必需的 - 像您一样向列表中添加某些内容已经会影响该传入列表。返回该列表只会使您的界面更"复杂",难以理解。

最新更新