Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java泛型类,如何创建实例_Java_Generics - Fatal编程技术网

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>();