涓銆乬etGenericSuperclass()鍜実etActualTypeArguments()鍩烘湰鐢ㄦ硶錛?/font>
import java.lang.reflect.ParameterizedType;
public class TT extends TT2<Integer> {
public static void main(String[] args) {
System.out.println(((ParameterizedType) new TT().getClass()
.getGenericSuperclass()).getActualTypeArguments()[0]);
}
}
//output錛歝lass java.lang.Integer
璇存槑錛?getGenericSuperclass() 閫氳繃鍙嶅皠鑾峰彇褰撳墠綾昏〃紺虹殑瀹炰綋錛堢被錛屾帴鍙o紝鍩烘湰綾誨瀷鎴杤oid錛夌殑鐩存帴鐖剁被鐨凾ype錛?span style="line-height: 21px">getActualTypeArguments()榪斿洖鍙傛暟鏁扮粍銆?/span>
浜屻佹硾鍨?/font> DAO 妯℃嫙
BaseDaoImpl綾伙細
package com.mrlun.oa.test;
import java.lang.reflect.ParameterizedType;
@SuppressWarnings("unchecked")
public class BaseDaoImpl<T> {
private Class clazz;
public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass()
.getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
System.out.println("Type涓猴細 " + clazz.getSimpleName());
}
public void save() {
System.out.println("Type涓猴細 " + clazz.getSimpleName());
}
}
UserDao綾伙細
package com.mrlun.oa.test;
public class UserDao extends BaseDaoImpl<Users>{
}
嫻嬭瘯綾伙細
package com.mrlun.oa.test;
public class Test{
public static void main(String[] args) {
UserDao userdao=new UserDao();
userdao.save();
}
}
//output錛?/span>
Type涓猴細 Users錛坣ew 瀛愮被鏃朵細璋冪敤鐖剁被鐨勯粯璁ょ殑鏋勯犳柟娉曪級
Type涓猴細 Users
榪欐椂錛屾垜浠氨鍙互浣跨敤娉涘瀷鏉ョ畝鍖朌AO鐨勬搷浣滐紝鐪佸幓浜嗗啓N澶氭湁閲嶅鐨勬柟娉曠殑DAO鐨勬椂闂淬?/span>

]]>