[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