Компилятор не знает, что вы собираетесь передать getValue()
экземпляр класса, который имеет метод getValue()
, поэтому t.getValue()
не проходит компиляцию.
Он узнает об этом, только если вы добавите тип, связанный с параметром универсального типа T
:
static <T extends MyValue> int getValue(T t) {
return t.getValue();
}
Конечно, в таком простом примере вы можете просто удалить параметр универсального типа и написать:
static int getValue(MyValue t) {
return t.getValue();
}