Java - Typecast是String类命名对象的对象

时间:2015-06-18 23:00:49

标签: java android

我有一个班级的对象。我想将它类型化为另一个类。 所以,我们通常做的是 -

click

如果我们将 hv 对象强制转换为卡车类对象。

但是如果类的名称存储在这样的字符串中 -

HeavyVehicle hv = new HeavyVehicle();
Truck tr = (Truck) hv;

有没有办法将 hv 对象强制转换为名为 ToCastStringName 的类?

3 个答案:

答案 0 :(得分:1)

我不确定您的用例是什么,但您实际上可以使用:

Class.forName(className).cast(someObject)

动态转换一个只知道类名的对象。在您的情况下,代码:

HeavyVehicle hv = new HeavyVehicle();
String ToCastStringName = "Truck";
Class.forName(ToCastStringName).cast(hv);

将返回Truck类型的对象。

在这篇文章中对这两种方法的使用和权衡进行了长时间的讨论:Java Class.cast() vs. cast operator

答案 1 :(得分:0)

您可以使用Class.forName(ToCastStringName).cast(hv)提供的ToCastStringName是类的完全限定名称。

答案 2 :(得分:0)

我相信使用Class.forName()在android中要复杂得多(比Java解决方案所示)。我试过跟随几个" java"示例,并且还没有得到任何在Andriod Studio中没有导致ClassNotFound错误的内容。

Android是它自己的独立语言,有些东西在这里工作方式不同。我搜索过,看起来答案在Android中要复杂得多。这显然与他们如何打包成APK有关。正如您在本文中所看到的,解决方案非常复杂。

http://yenliangl.blogspot.com/2009/11/dynamic-loading-of-classes-in-your.html