1

在 Java 中是否可以使用变量值作为类型?

例如:

String s = "String";

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

更新:

如果这种方式不可能,也许有人可以建议如何为变量赋予类型,当你从 xml 文件属性中获得它是什么类型时?像

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

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

4

2 回答 2

2

你是否在寻找这样的东西:

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();
    }

}
于 2013-11-09T12:09:55.020 回答
0

我知道没有一种语言允许它以您编写的方式以及其他方式:您可以在 C 或 C++ 中使用 typedef 来实现它,但在 Java 中则不行。但是,您通常可以像这样扩展一个类:

public class myName extends originalClassName {}

然后使用 myName 而不是 originalClassName。但是,您不能使用 String 来执行此操作,它是最终的,因此不能在之后继承。

于 2013-11-09T12:01:05.137 回答