id в BaseEntity: private и ' Serializable или расширение Serializable '.
Class B (которыйрасширяет BaseEntity) ничего не знает об этом поле.Если он определил свой собственный id и не переопределил getId () / setId (...), эти два метода продолжат использовать BaseEntity.id
Если вы добавите этот метод в BaseEntity:
public void setId2(final Serializable id) {
this.id = (T) id;
}
это позволяет вам установить BaseEntity.id для любого Serializable.
В следующем тесте вы можете затем установить поле идентификатора, например, Float значение ивсе компилируется и остается неизменным getId () удобно возвращает значение Float.
B b = new B();
b.setId2(2.1F);
System.out.println( b.getId() ); //prints out 2.1
Поэтому, если вы делаете то, что делаете, и спрашиваете «Какой тип возврата B.getId() method ', тогда, если вы не переопределите метод getId () в классе B (который заставит его использовать тип функции Integer и вернет Integer наверняка. Обратите внимание, что BaseEntity.id даже не будет виден B тогда!) отраженияответ не целочисленный, а общий Serializable.Потому что любой метод Serializable действительно может быть получен из метода getId ().