Java - 使用变量值将类型分配给另一个变量?

时间:2013-11-09 11:53:47

标签: java types casting

在Java中是否可以将变量值用于类型?

例如:

String s = "String";

然后我会创建另一个变量z,它可以使用s值作为他的类型。有可能吗?也许用反射或其他技术?

更新

如果这种方式不可能,也许有人可以建议如何将类型赋给变量,当你从xml files属性中得到它的类型时?喜欢

<tag type="String">MyValue</tag>

然后我可以使用type属性值来定义变量类型?

2 个答案:

答案 0 :(得分:1)

你是否寻找这样的东西:

public static void main(String[] args) {
    String s = "java.lang.String";

    Object o = "Some Value";

    Class<?> type;
    try {
        type = Class.forName(s);
        getValue(type, o);
    } catch (ClassNotFoundException e) {
        // class was not found
        e.printStackTrace();
    }
}

private static <T> T getValue(Class<T> desiredType, Object o) {
    if (o.getClass().isAssignableFrom(desiredType)) {
        return desiredType.cast(o);
    } else {
        throw new IllegalArgumentException();
    }

}

答案 1 :(得分:0)

我知道没有语言可以按照您编写的方式,以及其他方式:您可以使用C或C ++中的typedef来实现它,但不能使用Java。但是,您可以经常扩展这样的类:

public class myName extends originalClassName {}

然后使用myName而不是originalClassName。但是,您不能使用String,这是最终的,因此不能在继承之后继承。