我有这样的客户端提供的脚本
segment-id Integer
segment-description String
现在我想用以下方法构建一个类
Sample sample = new Sample();
// casting to the type specified in the script
(map.get("segment-id")) segmentId = sample.get("segment-id");
// Now it can be used as an Integer
Integer result = segmentId + 2;
是否可以做类似的事情
Class<map.get("segment-id")> segmentId = new Class<map.get("segment-id")>();
还是更好的解决方案...?我需要一种方法来创建特定类型的对象,这是我事先不知道的。
我当前的解决方案是
public Integer getInteger(String key) {
return map.get(key);
}
但是以这种方式,我必须知道高级segment-id
的类型为Integer
。
答案 0 :(得分:1)
您可以使用Class.forName()
获取类,并使用.newInstance()
获取新实例:
Object createdObject = Class.forName("java.lang.String").newInstance();
或...
Object createdObject = Class.forName("java.lang.Integer").newInstance();
如果您需要知道它是否是字符串:
if(createdObject instanceof String) {
String castValue = (String) createdObject;
...
}
if(createdObject instanceof Integer) {
Integer castValue = (Integer) createdObject;
...
}
但是您可以测试传入的字符串:
if("java.lang.String".equals(nameOfClassToCreate)) {
....
}