使用Class的Java转换对象

时间:2017-01-15 15:53:55

标签: java reflection casting

我有一个String,integer,double,...的数据持有者实例,我将数据保存到(var foo = require(__dirname + 'foo'); foo.doSomething('Hello', function(result){ console.log(result); }); )和(Oblect dataHolder)。 我的问题是如何将<{>} Class dataHolderClass投射到dataHolderint ......?

例如,我有以下数据类:

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

2 个答案:

答案 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;

这样你最终得到的问题是使用哪个施法场。