Java 泛型警告

Java 泛型警告,java,generics,Java,Generics,我刚刚安装了jdk1.7.0_07,我突然收到了大量关于泛型原始类型的警告。(我收到了数百个错误,它们混淆了其他可能有意义的警告。)据我所知,这些错误不应该生成,我不是用java-6-openjdk-i386得到的 我创建了以下小示例。(每个类都在自己的文件中。) 公共接口通用{ 公众不能得到(); } 公开课考试{ 公共测试安全单元(通用事物,整数){ 返回新测试(); } 公共无效安全壳(通用事物){} } 当我尝试编译这个(javac-Xlint)时,我得到以下警告: Test.java

我刚刚安装了jdk1.7.0_07,我突然收到了大量关于泛型原始类型的警告。(我收到了数百个错误,它们混淆了其他可能有意义的警告。)据我所知,这些错误不应该生成,我不是用java-6-openjdk-i386得到的

我创建了以下小示例。(每个类都在自己的文件中。)

公共接口通用{
公众不能得到();
}
公开课考试{
公共测试安全单元(通用事物,整数){
返回新测试();
}
公共无效安全壳(通用事物){}
}
当我尝试编译这个(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
Test.java:3:警告:[rawtypes]找到原始类型:Generic
公共测试安全单元(通用事物,整数){
^
缺少泛型类泛型的类型参数
其中T是一个类型变量:
T扩展在通用接口中声明的对象
Test.java:7:警告:[rawtypes]找到原始类型:Generic
公共无效安全壳(通用事物){}
^
缺少泛型类泛型的类型参数
其中T是一个类型变量:
T扩展在通用接口中声明的对象
2警告

添加
对象
作为泛型类型参数(
泛型对象
)解决了这个问题。我本以为
Generic
Generic
类型是等价的。我是否忽略了什么?

Generic
是参数化类型,而
Generic
是原始类型。这就是警告的原因。

我刚刚检查了Naftalin和Wadler提供的
Java
Generics的副本,但我不能找出他们没有添加类型参数的任何情况,这样你可能是对的。但是我不明白为什么我以前没有收到这些错误(我总是使用
-Xlint
编译)。看起来我有很多清理工作要做。@MarcvanDongen:可能是带有javac标志的开放jdk。但是我不确定,我从未使用过开放jdk。我不认为您删除了一些未经检查的禁止警告注释。如果没有
-Xlint
标志,我就不会得到警告。添加该标志只会强制
javac
被删除对它认为不安全的东西非常迂腐。
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