1

我刚刚安装了 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) 可以解决问题。我本来以为类型GenericGeneric<Object>是等价的。我忽略了什么吗?

4

1 回答 1

2

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

于 2012-10-02T04:02:08.240 回答