我有一个String,integer,double,...的数据保存器实例,并将数据保存到(Oblect dataHolder)和(Class dataHolderClass)。
我的问题是如何将dataHolder还原回intString ...?

例如,我有以下数据类:

class DataHolderClass {
    private Object data;
    private Class classData;

    DataHolderClass(Object data, Class dataClass) {
        this.data = data;
        this.classData = dataClass;
    }

    Object getDataBack() {
        return this.data;
    }

    Class getDataClassBack() {
        return this.classData;
    }
}


那么,如何知道dataClass并具有data来回退数据?
这是一些调用代码(不确定是否可以做这种魔术):

.....
public void foo(DataHolderClass input) {
    Class inputClass = input.getDataClassBack();
    Constructor constr = inputClass.getConstructor();
    DataType recoveredData = constr.newInstance();
    //  ^------- the DataType is defined in inputClass but how can I get it?
    recoveredData = (DataType) input.getDataBack();
    ...
}

最佳答案

从Java 5开始-泛型。

class DataHolderClass<T> {
    T data;

    DataHolderClass(T data) { ... }
    T getData() {
        return data;
    }
}


您具有开箱即用的类型安全性。

10-04 20:11