【问题标题】:Deriving type from Generic classes从泛型类派生类型
【发布时间】:2012-08-14 18:25:34
【问题描述】:

我有一个带有两个类型参数的泛型类:

public class MyGenericClass<T, S> {
    private List<T> myList;
    private List<S> mySecondList;

    //...

    public void addToFirstList(T e) {
        myList.add(e);
    }

    //...
}

我希望能够在工厂内创建类的实例时为这两个参数指定具体类型,然后能够从我的其余代码中派生这些类型。

例如,如果我有代码:

public class AccessFactory {        
    public static MyGenericClass<Integer, Float> getInst() {
        return new MyGenericClass<Integer, Float>();;
    }
}

public class UsingFactoryClass {
    private MyGenericClass access;

    ...

    public foo() {
        access = AccessFactory.getInst();
    }
}

我希望能够推导出UsingFactoryClass 类中的MyGenericClass 实例access 使用参数IntegerFloat

是否有可能做到这一点,而不必与无处不在的类型安全警告作斗争?

【问题讨论】:

    标签: java generics factory type-safety


    【解决方案1】:

    声明为:

    private MyGenericClass<Integer, Float> access;
    

    【讨论】:

    • +1。 OP 必须在任何地方重复类型参数;这只是生活中的事实。
    • +1。谢谢你。理想情况下,我希望能够使用工厂来创建一个实例并让客户端忘记使用的类型。为了支持我必须将类型参数绑定到所有实现通用的接口,我是否正确?
    • 如果你的UsingFactoryClass 类真的不关心类型,你总是可以将它声明为private MyGenericClass&lt;?, ?&gt; access;。关键是你必须用某种类型声明它以避免警告。
    猜你喜欢
    • 2014-03-22
    • 2011-10-09
    • 2011-05-24
    • 2010-10-22
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2015-01-26
    • 2010-10-22
    相关资源
    最近更新 更多