Java泛型类,如何创建实例
我的班级结构如下:Java泛型类,如何创建实例,java,generics,Java,Generics,我的班级结构如下: public abstract class Generic<T extends SuperClass> public class SuperGeneric<T extends SuperClass & SomeInterface> extends Generic<T> 现在这似乎不起作用了。 在Generic上,它给出以下错误:类型Generic的参数数量不正确;当您实例化时,它不能用参数参数化,您需要为编译器提供一个
public abstract class Generic<T extends SuperClass>
public class SuperGeneric<T extends SuperClass & SomeInterface>
extends Generic<T>
现在这似乎不起作用了。
在
Generic
上,它给出以下错误:类型Generic的参数数量不正确;当您实例化时,它不能用参数参数化,您需要为编译器提供一个要填写的类型 要实例化泛型类,需要提供具体类型。您说过有两个类满足约束。假设它们是Type1
和Type2
那么你应该能够做到:
Generic<Type1> myGeneric1 = new SuperGeneric<Type1>();
Generic myGeneric1=new SuperGeneric();
及
Generic myGeneric2=new SuperGeneric();
通配符仅用于声明。它们的意思是:您可以在这里放置任何类型(满足给定约束)那么通配符在哪里使用呢?在方法参数和返回类型中,通配符描述了T可以是什么。但实际上您需要为T提供一些东西。您正在将类文本和其他泛型特性混为一谈。-这是神谕tutorial@nsfyn55我发现Java语法也很混乱。而在C#中,您将类型约束放在单独的子句上(在中,其中);在Java中,您将类型约束声明放在泛型声明中(Generic
),因此您对如何实例化它感到困惑。话虽如此,当您实例化(Java或C#)时,它们都非常简单,语法相同(即Generic x=new SuperGeneric()
),请参见我的比较,那么通配符在哪里使用?在方法参数和返回类型中?@stevenroose请参阅我的最后一句话
Generic<Type1> myGeneric1 = new SuperGeneric<Type1>();
Generic<Type2> myGeneric2 = new SuperGeneric<Type2>();