Java从该类的字符串中声明一个类对象?

时间:2019-04-29 05:43:38

标签: java dictionary

我有这样的客户端提供的脚本

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

1 个答案:

答案 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)) {
    ....
}