在 Java 中是否可以使用变量值作为类型?
例如:
String s = "String";
然后我会创建另一个变量z
,它可以为他的类型使用s
值。有可能这样做吗?也许通过反射或其他技术?
更新:
如果这种方式不可能,也许有人可以建议如何为变量赋予类型,当你从 xml 文件属性中获得它是什么类型时?像
<tag type="String">MyValue</tag>
然后我可以使用type
属性值来定义变量类型?
你是否在寻找这样的东西:
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();
}
}
我知道没有一种语言允许它以您编写的方式以及其他方式:您可以在 C 或 C++ 中使用 typedef 来实现它,但在 Java 中则不行。但是,您通常可以像这样扩展一个类:
public class myName extends originalClassName {}
然后使用 myName 而不是 originalClassName。但是,您不能使用 String 来执行此操作,它是最终的,因此不能在之后继承。