在Java中为类创建默认泛型类型

时间:2012-01-12 20:50:36

标签: java class generics

我想创建一个具有两种泛型类型的对象,但在某些地方,它只使用一种泛型类型创建。在这些情况下,第二种类型并不重要,所以我希望能够提供一个选项来创建只有一个泛型类型的类,而另一个泛型类型默认设置为Object,这看起来像是(用C ++风格):

public class myClass<T,O=Object> {...
}

因为我知道Java中没有默认值,所以我不希望有默认类型,但有没有办法创建类似的东西(可能是类覆盖)?

2 个答案:

答案 0 :(得分:4)

创建子类似乎是我使用static factory method的开销。

public class MyClass<T, O> {
    ...

    <T> public static MyClass<T, Object> create(...)
    ...
}

答案 1 :(得分:0)

实现这一目标的典型方法是继承“myClass”。

也就是说,假设你有


public class MyClass<T, O>
{}

你创建了一个子类


public class DefaultMyClass<T> extends MyClass<T, Object>
{}

这可能不如你想要的那么优雅,但它确实是实现这一目标的唯一方法。