在Java中是否可以将变量值用于类型?
例如:
String s = "String";
然后我会创建另一个变量z
,它可以使用s
值作为他的类型。有可能吗?也许用反射或其他技术?
更新
如果这种方式不可能,也许有人可以建议如何将类型赋给变量,当你从xml files属性中得到它的类型时?喜欢
<tag type="String">MyValue</tag>
然后我可以使用type
属性值来定义变量类型?
答案 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,这是最终的,因此不能在继承之后继承。