当前位置:  开发笔记 > 编程语言 > 正文

仅当给定类名作为该类型的字符串时,转换为未知类型

如何解决《仅当给定类名作为该类型的字符串时,转换为未知类型》经验,为你挑选了2个好方法。

我目前拥有一个对象列表(使用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参数为我提供正确的类型?



1> ShuggyCoUk..:

当你所做的就是将结果分配给对象时,铸造的重点是什么?如果它没有实现接口/扩展或者是类,那么你将实现的只是一个例外,如果它没有做任何事情.

为此简单:

  public static boolean IsInstance(object x, String className)
  {
     Class cls = Class.forName(className);
     return cls.isInstance(x);
  }

足够(而且更清洁)

如果你使用反射来获得类的字段/方法就可以了



2> casperOne..:

不,你不能在大多数语言中这样做.

原因是要转换的类型必须在编译时知道,而不是在运行时(这是你想要做的).

如果你考虑它,它是有道理的,因为假设变量可以是任何类型的名称,你应该如何访问各种成员?您不能,除非它们在所有实例实现的基本类型/接口中定义,在这种情况下您应该只使用它.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有