我有一个String,integer,double,...的数据持有者实例,我将数据保存到(var foo = require(__dirname + 'foo');
foo.doSomething('Hello', function(result){ console.log(result); });
)和(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
答案 0 :(得分:2)
自从java 5 - generics就在这里。
class DataHolderClass<T> {
T data;
DataHolderClass(T data) { ... }
T getData() {
return data;
}
}
你开箱即用。
答案 1 :(得分:0)
如果你可以限制DataObject可以选择的选项,你可以使用带有instanceof check的if / else序列,如
Integer castInt;
Double castDbl;
String castStr;
if (dataObject instanceof Integer) castInt = (Integer) dataObject;
else if (dataObject instanceof Double) castDbl = (Double) dataObject;
else if (dataObject instanceof Double) castStr = (String) dataObject;
这样你最终得到的问题是使用哪个施法场。