我使用
加载课程Class.forName(klassname,false,loader)
在此之后我使用
创建一个实例klass.newInstance(); 它返回一个对象类型。我想将它强制转换为特定的类型(即.Klassnamw实例)。我使用普通的转换,但它会挂起,因为它在运行时没有被解析。我怎么能投出它?Hellp
答案 0 :(得分:3)
Casting通常用于为编译器提供更多信息。您在编译时没有这些信息,因此您无法将其提供给编译器。
此外,施法点通常是这样你可以找到一些其他人不会知道的成员 - 但如果你在执行时间之前不知道这门课程,你怎么知道成员呢?
在某些情况下它会很好,但它们并不常见。在创建实例后,您要对该实例做什么?如果您尝试在编译时调用 知道的方法,是否可以将这些方法作为接口的一部分并转换为接口?
答案 1 :(得分:0)
您正在使用反射,因为您不知道(或无法解析)要在编译时加载的类。
因此,你不能投于课堂。
除非有一个接口(或父类)可以在编译时解析(并因此转换为),否则你必须使用反射来做对象的任何有用的事情。