Šta je novo?

Java 1.5, generics i type safe castovanje

jddipqd

Čuven
Učlanjen(a)
17.10.2000
Poruke
2,555
Poena
725
Imam metodu koja otprilike ovako izgleda:
Kod:
public static <T> ArrayList<Class<T>> getClasses(Class<T> type) {
	ArrayList<Class<T>> classes = new ArrayList<Class<T>>();
	for (...) {
		Class foundClass = Class.forName("someName");
		if (type.isAssignableFrom(foundClass)) {
			classes.add((Class<T>)foundClass);
		}
	}
	return classes;
}
I to radi kako treba, jedino se kompajler žali za cast (Class<T>)foundClass: Type safety: The cast from Class to Class<T> is actually checking against the erased type Class.

Kako izbeći ovaj warning (a da se ne koristi @SuppressWarnings("unchecked") :d)?
 
Koliko ja znam, nikako. Seriajalizovani objekti nemaju definiciju generics tipa.
U datom slucaju kompajler ne moze da ti garantuje da je klasa koju ucitavas tog tipa koji ti ocekujes i da u runtime-u neces dobiti ClassCastException.
 
Jesi li probao da ga castuješ samo u Class (svodi ti se na isto)?
 
Nazad
Vrh Dno