uczę Java rodzajowy, mam szkopuł do jakiegoś problemu uruchamianiu tego typu otrzymane od parametrów ogólnych (jest to możliwe w języku C# chociaż)instancji generycznych za
class Person {
public static <T> T say() {
return new T; // this has error
}
}
Próbowałem to: generics in Java - instantiating T
public static <T> T say(Class<?> t) {
return t.newInstance();
}
błąd:
incompatible types
found : capture#426 of ?
required: T
To nie działa. Poniższa wygląda ok, ale to wiąże instancji niektóre klasy nie mogą być stosowane w metodzie statycznej: Instantiating generics type in java
public class Abc<T>
{
public T getInstanceOfT(Class<T> aClass)
{
return aClass.newInstance();
}
}
Jest to typ wymazywania Java ludzie mówią? Czy to jest ograniczenie wymazywania typu?
Co to jest obejście tego problemu?
+1 i zaakceptowane, nie tak eleganckie, jak C#, choć (nie swój wina ;-)). Btw, to jest to, co nazwali typem wymazania, dlatego nie może bezpośrednio utworzyć wystąpienia T? – Hao
@Hao: exact: rzeczywisty typ T nie jest dostępny w czasie wykonywania, dlatego musisz przekazać obiekt klasy, aby był wyraźny. –