我刚刚安装了 jdk1.7.0_07,突然被大量有关通用原始类型的警告淹没。 (我收到了数百个错误,它们混淆了其他可能有意义的警告。)据我所知,不应生成这些错误,而且我没有使用 java-6-openjdk-i386 得到它们。
我创建了以下小示例。 (每个类都在自己的文件中。)
public interface Generic<T> {
public T get( );
}
public class Test {
public Test safeAsHell( Generic thing, int number ) {
return new Test( );
}
public void safeAsHell( Generic thing ) { }
}
当我尝试编译这个(javac -Xlint)时,我收到以下警告:
Test.java:3: warning: [rawtypes] found raw type: Generic
public Test safeAsHell( Generic thing, int number ) {
^
missing type arguments for generic class Generic<T>
where T is a type-variable:
T extends Object declared in interface Generic
Test.java:7: warning: [rawtypes] found raw type: Generic
public void safeAsHell( Generic thing ) { }
^
missing type arguments for generic class Generic<T>
where T is a type-variable:
T extends Object declared in interface Generic
2 warnings
添加Object
作为泛型类型参数( Generic<Object> thing
)解决了这个问题。我本以为类型 Generic
和Generic<Object>
是等价的。我是否忽略了什么?
最佳答案
Generic<Object>
是参数化类型,而 Generic
是原始类型。这就是警告的原因。
关于java - 通用类型警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684335/