@Service
public abstract class MainService<E extends AbstractEntity, R extends MainRepository<E>> {
@Autowired
MainRepository<E> repository;
public E find(long id) throws Exception {
return this.repository.find(---, id);
}
}
這里有可能找到泛型型別E的類參考作為第一個引數而不是--- ...?
我對實作的期望是創建一個通用呼叫,以避免在所有服務類中重復以下代碼。
return this.repository.find(Entity.class,id);
uj5u.com熱心網友回復:
是的,這是一個這樣做的例子:
import java.lang.reflect.ParameterizedType;
public class Foo {
public static abstract class Bar<E> {
public E returnAnE() throws InstantiationException, IllegalAccessException {
Class e = (Class)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
return (E)e.newInstance();
}
}
public static class Baz extends Bar<String> {
}
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Baz baz = new Baz();
String s = baz.returnAnE();
}
}
此代碼將因類結構與我們這里的不匹配而失敗,因此您應該執行檢查實體而不是強制轉換,并檢查陣列訪問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/395955.html
