我有一个班级的对象。我想将它类型化为另一个类。 所以,我们通常做的是 -
click
如果我们将 hv 对象强制转换为卡车类对象。
但是如果类的名称存储在这样的字符串中 -
HeavyVehicle hv = new HeavyVehicle();
Truck tr = (Truck) hv;
有没有办法将 hv 对象强制转换为名为 ToCastStringName 的类?
答案 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