Информация об общем типе во время выполнения (Java)JAVA

Программисты JAVA общаются здесь
Гость
Информация об общем типе во время выполнения (Java)

Сообщение Гость »

Я читал об дженериках в одиннадцатом издании «Полного справочника по Java», в частности в части «Сравнение типов во время выполнения с универсальной иерархией».
Меня смутила эта часть:

Код: Выделить всё

// The following can't be compiled because
// generic type info does not exist at run time.
// if (iOb2 instanceof Gen2)
//   System.out.println("iOb2 is instance of Gen2")
Но когда я попытался запустить код самостоятельно, он скомпилировался и выполнился отлично:

Код: Выделить всё

class Gen{}

class Gen2 extends Gen{}

public class Tester{
public static void main(String[] args){

Gen2 obj = new Gen2();
System.out.println(obj instanceof Gen2);
//output is true

}
}
Теперь я понимаю, что Type Erasure должно вызывать ошибку во время компиляции. Но я не понимаю, почему мой код работает.

Подробнее: https://stackoverflow.com/questions/799 ... ntime-java

Вернуться в «JAVA»