[Java lista] java.beans vs generics
Tamás Magyar
magyusz at gmail.com
2007. Jún. 22., P, 02:02:32 CEST
Java 1.5-ben szeretném eldönteni egy propertyről, hogy milyen List
(mondjuk ha tudnám, hogy List<? extends Number> -e, az lenne a
legszebb), de legalább azt, hogy List<String> vagy List<Long> -e,
mindezt a "java.beans" standard eszközökkel. Van annál szebb módszer,
mint az utolsó sora ennek a kódrészletnek? A toString komparálása
helyett jobban örülnék, ha valahogy adna nekem szépen egy String
objektumot.
import java.beans.BeanInfo;
import java.beans.PropertyDescriptor;
BeanInfo beanInfo = getBeanInfo(bean); //import java.beans.Introspector;
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor descriptor : propertyDescriptors) {
if(descriptor.getPropertyType().isAssignableFrom(List.class)){
if(descriptor.getReadMethod().getGenericReturnType().toString().equals("java.util.List<java.lang.String>")){
Sok debugolás után sun.reflect.generics osztályokba futottam, azok nem
platform függetlenek, úgyhogy azokat kerülném, de még azokból sem
tudtam egzaktul kinyerni, hogy milyen is az a List. getBounds() -ig
eljutottam, de az Object -et adott vissza, pedig nem arra voltam
kiváncsi, hogy List-nek általában milyen paramétere lehet, hanem, hogy
az én List paraméterem most éppen milyen paramétert kapott.
Az a gyanúm, hogy innen kéne valamelyik subinterfacet használni:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Type.html
de nem jöttem rá, hogy melyiket és hogyan.
Aki már csinált ilyet, légyszi segítsen! Köszi előre is!
Magyusz
További információk a(z) Javalist levelezőlistáról