以下のコードスニペットで、Class>B>をClass>A>にキャストしようとしているときに、1が実行時例外を生成しないのはなぜですか?
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
}