java – (Generics)不能对非静态类型T进行静态引用
运行Demo类将在SomeClass中调用静态方法newInstance来调用构造函数并打印hello
定义方法将包含带参数的返回类型方法名称 newInstance的返回类型是< T> SomeClass< 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); } } 解决方法
什么是静态方法?适用于类的方法,而不是特定的实例.类签名公共类SomeClass< T>中的通用参数T.仅适用于特定实例(因此非静态类型T).例如SomeClass的<字符串>其中[T = String].
通过包括< T>在公共静态< T> SomeClass< T>的方法签名中newInstance(Class< T> clazz).你这么说;对于此方法,存在泛型类型参数T.此T与类签名中的T分开.因此它也可以是C,即公共静态< C>. SomeClass的< c取代; newInstance(Class< C> clazz).或者完全不同的东西. 但是如果你不包括< T>使用该方法,编译器认为您正在尝试在类签名中使用T.哪个是非法的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |