运行Demo类将在SomeClass中调用静态方法newInstance来调用构造函数并打印hello
定义方法将包含带参数的返回类型+方法名称
newInstance的返回类型是<T> SomeClass <T>对我来说似乎很奇怪,因为我的类被称为SomeClass <T>而不是<T> SomeClass <T>
为什么我需要在SomeClass <T>前面的<T>?似乎如果我不包含它,将会出现一个常见错误,称为无法对非静态类型T进行静态引用
另外要指出的是,我可以在<T>和SomeClass <T>之间放置许多空格,因此它们似乎不需要在一起.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
Jor*_*nee 12
什么是静态方法?适用于类的方法,而不是特定的实例.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类签名.哪个是非法的.
| 归档时间: |
|
| 查看次数: |
9875 次 |
| 最近记录: |