考慮下面的Java類:爲什麼編譯器在進行「壞」轉換時不會發生錯誤?
public class Animal {
public static void printText(Object obj) {
System.out.println(obj.toString());
}
}
class Tiger extends Animal {
// Contains some unimportant methods.
}
而現在,當以下鍵入到的主要方法,編譯器不會給任何錯誤,即使是投會導致錯誤。爲什麼?
public static void main(String[] args) {
Animal animal = new Animal();
((Tiger)animal).printText(animal); // <= ?? no error in the compiler ??
}
引發了異常。編譯器錯誤已打印。不要混淆你自己。 – EJP