gpt4 book ai didi

java - 为什么我会收到泛型编译器警告?

转载 作者:行者123 更新时间:2023-12-03 06:11:41 25 4
gpt4 key购买 nike

我的代码是:

import java.util.*;

public class A {
public static void main(String[] args){
List<String> list = new ArrayList();
list.add("1"); //ok line 1
list.add(1); //error line 2
}

当我运行这段代码时,Java 给出了一个错误,我知道为什么,但即使我只使用第 1 行,编译器也会警告我。为什么我会收到此警告?我不明白我的第一个示例和这段代码有什么区别:

import java.util.*;

public class A {
public static void main(String[] args){
List<String> list = new ArrayList<String>(); // <-- notice the second <String>
list.add("1"); //ok line 1
list.add(1); //error line 2
}
}

最佳答案

When I run this code Java gives me an error and I know why, but even when I only use line 1 the compiler warns me. Why do I get this warning?

当你使用你的代码时,编译器会给你一个警告,比如

List<String> list = new ArrayList();

ArrayList is a raw type. References to generic type ArrayList should be parameterized

它表示您还必须为 ArrayList 提供参数化类型。

List<String> list = new ArrayList<String>();

编辑:

正如 @newacct 所建议的:如果您使用的是 Java 7,则在实例化 Collection 时可以使用空尖括号 (<>),如下所示:

List<String> list = new ArrayList<>();

来自Java 7 documentation :

You can replace the type arguments required to invoke the constructor of a generic class with an empty set of type parameters (<>) as long as the compiler can infer the type arguments from the context.

关于java - 为什么我会收到泛型编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13781779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com