Java泛型使用专门的构造函数

时间:2015-03-26 16:18:07

标签: java generics inheritance polymorphism

我有一个有趣的问题,即谷歌没有找到一个好的解决方案。

我有以下课程签名

public class CCheckBoxList<T extends CGenericController<K>, K extends CGenericDomain> extends CGenericViewer<T, K>

对于类CGenericDomain(接口),专用类有自己的方法和专门的构造函数。该接口只有getData和setData方法来获取/设置数据。解决我遇到的早期问题的唯一方法。

在我的一个实现中,我将通过传入使用CGenericDomain实现的对象(Ahhh !!!)来使用CGenericController设置数据(没有问题)

CGenericController和CGenericDomain使用JPA,因此控制器读取/写入/修改数据库中的对象,而CGenericDomain是应该写入数据库的对象。每个主表都有自己的CGnericDomain实现和dCGenericController实现。

在实例化此课程时,我知道 T和K的用途。我在程序的构建过程中明确定义了它们。

这是我到目前为止所知道的

public void setData(HashMap<String, Object> pObjs) {
    // TODO Add the required logic for adding into the list all values that are "selected" from an external function

    Class<K> clazz = null;
    try {
        K newK = clazz.newInstance();
        if (newK instanceof CGenre)
        {
            // Requires knowledge of the implementation further up stream!
        }
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    itsContentPane.removeAll();
    itsContentPane.setLayout(new GridLayout(pObjs.size() + 3, 0));
}

我在Google搜索中提出或发现的选项是

  1. 为所有继承CGenericDomain
  2. 的对象实现instanceof方法
  3. 为所有使用CGenericDomain的对象创建专门的类(你得到一个类,你得到一个类,每个人都得到一个类!)
  4. 了解抽象工厂并学习如何做到这一点(我该怎么做?)
  5. 是否有反射方式来获取类的专用构造函数并使用它?如果没有,方法怎么样?我或许可以做方法。

    社区的任何帮助都会很棒。冒险进入新领域!

    谢谢!

0 个答案:

没有答案