Java泛型类,如何创建实例

时间:2012-05-23 12:14:47

标签: java generics

我有以下类结构:

public abstract class Generic<T extends SuperClass>

public class SuperGeneric<T extends SuperClass & SomeInterface> 
    extends Generic<T>

现在我想创建一个涵盖所有可能类的SuperGeneric实例。我试过这样的话:

Generic<? extends SuperClass & SomeInterface> myGeneric 
    = new SuperGeneric<? extends SuperClass & SomeInterface>();

现在这似乎不起作用。 在Generic,它会出现以下错误:Incorrect number of arguments for type Generic<T>; it cannot be parameterized with arguments <? extends SuperClass, SomeInterface>

new SuperGeneric上,我收到了类似的错误:Incorrect number of arguments for type SuperGeneric<T>; it cannot be parameterized with arguments <? extends SuperClass, SomeInterface>

知道如何正确创建此SuperGeneric的实例吗?

我的想法是我有两个不同的类满足extends SuperClass & SomeInterface条件,但这些类不能用一种类型推广。

2 个答案:

答案 0 :(得分:2)

实例化时,需要提供一个类型供编译器填写。

答案 1 :(得分:2)

如果要实例化泛型类,则需要提供具体类型。你说有两个类可以满足约束条件。说这些是Type1Type2

然后你应该能够做到:

Generic<Type1> myGeneric1 = new SuperGeneric<Type1>();

Generic<Type2> myGeneric2 = new SuperGeneric<Type2>();

通配符仅用于声明。它们的意思是:你可以在这里放置任何类型(满足给定的约束条件)