Я сказал бы, что это - ошибка в компиляторе солнца, сообщил здесь и здесь , потому что, если Вы изменяете свою строку на ту ниже его работы с обоими, который, кажется, точно, что описано в отчетах об ошибках.
return GenericsTest2.<T>readObject(new ObjectInputStream(new FileInputStream(file)));
В этом случае я сказал бы, что Ваш код является неправильным (и компилятор Sun является правильным). Нет ничего в Ваших входных параметрах к readObject
для фактического выведения типа T
. В этом случае Вы более обеспечены, чтобы позволить ему эхо-сигнал и позволить клиентам вручную бросить тип результата.
Это должно работать (хотя я не протестировал его):
public static <T> T readObject(String file) throws Exception {
return GenericsTest2.<T>readObject(new ObjectInputStream(new FileInputStream(file)));
}