new generic object problem
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Create instance of generic type in Java?
号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | public class MyCache <T extends Taxable> { private Map<Long, T> map = new HashMap<Long, T>(); public void putToMap(Long nip, T t){ map.put(nip, t); } public T getFromMap(Long nip){ return map.get(nip); } } public class TaxableFactory<T extends Taxable> { private MyCache<T> cache; public void setCache(MyCache<T> cache) { this.cache = cache; } public TaxableFactory() { } public void putT(T t) { cache.putToMap(t.getNip(), t); } public T get(long nip) throws InstantiationException, IllegalAccessException { T myT = cache.getFromMap(nip); if (myT == null) { T newT ; putT(newT); return null; } else return myT; } |
我用我的
即使您使用的是泛型,如果您想要获得T的新实例,仍然需要将类作为参数传递。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public T get(Class<T> clazz, long nip) throws InstantiationException, IllegalAccessException { T myT = cache.getFromMap(nip); if (myT == null) { T newT = clazz.newInstance(); putT(newT); return newT; } else return myT; } |
你可以这样称呼它:
1 | .get(SomeTaxable.class, someNip) |
号