Ja ne znam moze li jednostavnije, ovako jeste malo zamrseno jer ne znam bolji nacin da uradis jednostavno T x = new T() kao u C#-u.
Kôd:
public class Bazna {
private String _name;
public void setName(String name) { _name = name; }
public String getName() { return _name; }
public<T extends Bazna> List<T> getList(Class<T> type) throws InstantiationException, IllegalAccessException
{
List<T> lista = new ArrayList<T>();
//T prvi = new T(); // mfff!!! oh lord, there ain't no heaven on the county road :(
T prvi = type.newInstance(); prvi.setName( "Prva" );
T drugi = type.newInstance(); drugi.setName( "Druga" );
lista.add(prvi);
lista.add(drugi);
return lista;
}
}
Kôd:
public class Izvedena extends Bazna {}
I onda:
Kôd:
Izvedena izv = new Izvedena();
try {
List<Izvedena> rezultat = izv.getList(Izvedena.class);
for( Izvedena i : rezultat )
{
System.out.println( "Name=" + i.getName() );
}
} catch (Exception e){
}
Sto daje:
Name=Prva
Name=Druga