我写了以下代码:
public class Test<T> {
public void method(){
B b = new B();
}
public class B{ }
}
//Some method in some class contains the following lines
Test<Integer> t = null;
Test.B b = t.new B(); //warning Test.B is a raw type
Run Code Online (Sandbox Code Playgroud)
为什么我收到这个警告?内部类型的declation B不包含类型参数,因此它不是泛型类型.此外,规范给出了以下内容:
如果一个类声明了一个或多个类型变量,则它是通用的
该类B未声明类型变量.那为什么它是通用类型?
虽然内部类B没有声明任何类型变量,但它的实例隐式引用外部类的实例,这样做.
为什么我收到这个警告?
Test<Integer> t = null;
Test.B b = t.new B(); //warning Test.B is a raw type
Run Code Online (Sandbox Code Playgroud)
因为您使用原始类型声明了变量b.相反,您可以声明:
Test<Integer>.B b = t.new B(); // no warning!
Run Code Online (Sandbox Code Playgroud)