gpt4 book ai didi

java - 在Java中,为什么参数化类型的构造函数的无类型调用会引起编译器警告?

转载 作者:行者123 更新时间:2023-12-01 07:00:00 25 4
gpt4 key购买 nike

在 Java 中,为什么参数化类型的构造函数的无类型调用会引发编译器警告?为什么可以用静态方法做类似的事情?例如:

class Test<T> {

Test() {}

static <T> Test<T> create() {
return new Test<T>();
}

@SuppressWarnings("unused")
public static void main(String[] args) {
Test<String> warning = new Test(); // compiler warning - why?
Test<String> okay = Test.create(); // no warning here - why?
Test<String> okay2 = Test.<String>create(); // why doesn't it need this?
}

}

最佳答案

因为您将一个非类型化实例分配给一个类型化变量。您的三个案例:

  1. 因为 new Test<String>() 是正确的。
  2. 因为 Java 支持基于返回类型的自动类型推断,即它可能暗示此处存在错误的泛型参数,并且在方法内部,您已通过使用 new Test<T>() (而不仅仅是 new Test() )。
  3. 因为 2.;-)

关于java - 在Java中,为什么参数化类型的构造函数的无类型调用会引起编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326658/

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