(generics)不能对非静态类型T进行静态引用
运行Demo类将在SomeClass中调用静态方法newInstance来调用构造函数并打印hello
定义方法将包含带参数的返回类型+方法名称
newInstance的返回类型是 SomeClass 对我来说似乎很奇怪,因为我的类被称为SomeClass 而不是 SomeClass
为什么我需要在SomeClass 前面的? 似乎如果我不包含它,将会出现一个常见错误,称为无法对非静态类型T进行静态引用
另外需要指出的是,我可以在和SomeClass 之间放置许多空格,因此它们似乎不需要在一起。
public class SomeClass { public static SomeClass newInstance(Class clazz){ return new SomeClass(clazz); } private SomeClass(Class clazz){ System.out.println("hello"); } } public class Demo { public static void main(String args[]) { SomeClass instance = SomeClass.newInstance(String.class); } }
什么是静态方法? 适用于类的方法,而不是特定的实例。 类签名public class SomeClass
的generics参数T
仅可用于特定实例(因此non-static type T
)。 例如SomeClass
,其中[T = String]
。
通过在public static
的方法签名中包含
。 你这么说; 对于此方法,存在generics类型参数T
该T
与类签名中的T
分开。 所以它也可能是C
即public static
。 或者完全不同的东西。
但是如果你没有在方法中包含
,编译器会认为你正在尝试在类签名中使用T
哪个是非法的。