我目前拥有一个对象列表(使用Java 1.3),让我们说我想将从list.get(i)返回的一个对象转换为一种类型,我只知道类的名称为String.基本上,我如何对象o =(classname)list.get(i); 其中className是className的String变量.
我以为我可以使用(Class.forName(className))list.get(i),但是我收到了语法错误,声称我忘记了分号.
不幸的是,由于我使用的是Java 1.3,因此我无法访问Class.cast(Object)方法.
在Java 1.3中转换为其他类型时使用的类的名称是什么?是否有一些方法可以通过类名的String参数为我提供正确的类型?
当你所做的就是将结果分配给对象时,铸造的重点是什么?如果它没有实现接口/扩展或者是类,那么你将实现的只是一个例外,如果它没有做任何事情.
为此简单:
public static boolean IsInstance(object x, String className) { Class cls = Class.forName(className); return cls.isInstance(x); }
足够(而且更清洁)
如果你使用反射来获得类的字段/方法就可以了
不,你不能在大多数语言中这样做.
原因是要转换的类型必须在编译时知道,而不是在运行时(这是你想要做的).
如果你考虑它,它是有道理的,因为假设变量可以是任何类型的名称,你应该如何访问各种成员?您不能,除非它们在所有实例实现的基本类型/接口中定义,在这种情况下您应该只使用它.