为运行时加载的类转换对象

时间:2010-03-31 05:25:23

标签: java reflection

我使用

加载课程

Class.forName(klassname,false,loader)

在此之后我使用

创建一个实例

klass.newInstance();   它返回一个对象类型。我想将它强制转换为特定的类型(即.Klassnamw实例)。我使用普通的转换,但它会挂起,因为它在运行时没有被解析。我怎么能投出它?Hellp

2 个答案:

答案 0 :(得分:3)

Casting通常用于为编译器提供更多信息。您在编译时没有这些信息,因此您无法将其提供给编译器。

此外,施法点通常是这样你可以找到一些其他人不会知道的成员 - 但如果你在执行时间之前不知道这门课程,你怎么知道成员呢?

在某些情况下它会很好,但它们并不常见。在创建实例后,您要对该实例做什么?如果您尝试在编译时调用 知道的方法,是否可以将这些方法作为接口的一部分并转换为接口

答案 1 :(得分:0)

您正在使用反射,因为您不知道(或无法解析)要在编译时加载的类。

因此,你不能投于课堂。

除非有一个接口(或父类)可以在编译时解析(并因此转换为),否则你必须使用反射来做对象的任何有用的事情。

相关问题