Dlaczego tak się stało? Jedna linia kodu działa dobrze, a druga nie. Czy automatyczne odlewanie odbywa się tylko w określonych warunkach? Próbowałem przypisać gt.echoV() do obiektu i działa dobrze; ale kiedy przypiszesz go do String, ten sam błąd znowu się pojawi.Java rodzajowe typu metoda odlewania
public class GeneMethodTest {
public static void main(String... args) {
GeneMethodTest gt = new GeneMethodTest();
gt.<String>echoV(); //this line works well
gt.<String>echoV().getClass();//this line leads to a type cast exception
}
public <T> T echoV() {
T t=(T)(new Object());
return t;
}
}
Ta odpowiedź może pomóc http://stackoverflow.com/a/3437930/1316346 –
'(T) (nowy obiekt())' jest * niezaznaczoną obsadą * - pamiętaj, aby przeczytać o tym, co to jest i implikacje wraz z * typem wymazania *. –
Tak, wiem to. @PaulBellora Właściwie (T) (new Object()) nic nie zrobi w czasie wykonywania z powodu usunięcia typu. Problem polega na tym, że dzwonię do gt. .echoV() automatyczne odlewanie klas nie działa, gdy zaczyna działać, gdy wzywam gt. echo.getClass() –