运行demo类将调用someclass中的静态方法newinstance来调用构造函数并打印hello
定义一个方法将包括一个带有参数的返回类型+方法名
newinstance的返回类型是someclass对我来说似乎很奇怪,因为我的类被称为someclass而不是someclass
为什么我要把放在someclass前面?似乎如果我不包括它,就会出现一个常见的错误,名为cannotmakeastaticreference to the non-static type t
另一个需要指出的是,我可以在和someclass之间放置许多空格,这样它们就不需要在一起了。
public class SomeClass<T> {
public static <T>SomeClass<T> newInstance(Class<T> clazz){
return new SomeClass<T>(clazz);
}
private SomeClass(Class<T> clazz){
System.out.println("hello");
}
}
public class Demo {
public static void main(String args[])
{
SomeClass<String> instance = SomeClass.newInstance(String.class);
}
}
1条答案
按热度按时间jtw3ybtb1#
什么是静态方法?在类上工作而不是在特定示例上工作的方法。泛型参数
T
在班级签名public class SomeClass<T>
仅对特定示例可用(因此non-static type T
). 例如SomeClass<String>
在哪里[T = String]
.包括
<T>
在签名的方法中public static <T>SomeClass<T> newInstance(Class<T> clazz)
. 你是这么说的;对于此方法,有一个泛型类型参数T
. 这个T
是独立于T
在班级签名。所以也可能是这样C
即public static <C> SomeClass<C> newInstance(Class<C> clazz)
. 或者完全不同的东西。但如果你不包括
<T>
对于该方法,编译器认为您正在尝试使用T
在班级签名。这是违法的。