在下面的代码片段中,为什么1不会生成运行时异常,因为我试图将Class> B>转换为Class> A>?Class Literal vs Class.forname + Java Generics
package example;
Class A {
public A() {
}
}
Class B extends A {
public B() {
}
}
public static void main() {
Class<A> c = null;
//1. Does not produce exception at run-time even though I cast Class<B> to Class<A>
try {
c = (Class<A>) Class.forName("example.B");
} catch (ClassNotFoundException e) {
}
//2. Compile time error: Cannot Cast Class<B> to Class<A>
c = (Class<A>) B.class; //Error
}
它*可能*抛出一个ClassNotFoundException。有了这种异常处理,你永远不会知道。 – EJP
哦,其实我已经在打印内打印了,只是忘了在我的问题中添加它。放心吧,没有ClassNotFoundException –