我有一个String,integer,double,...的数据保存器实例,并将数据保存到(Oblect dataHolder
)和(Class dataHolderClass
)。
我的问题是如何将dataHolder
还原回int
,String
...?
例如,我有以下数据类:
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;
}
}
您具有开箱即用的类型安全性。