반사 기반서브클래스 범주 유형 판단하기

971 단어 범형류
상위 코드:
 
package cn.generic;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class Base<T,PK> {
	
	protected Class<T> entityClass;
	
	protected Class<PK> pkClass;

	public Base() {
		Type genType = getClass().getGenericSuperclass();
		Type[] params = ((ParameterizedType)genType).getActualTypeArguments();
		
		this.entityClass = (Class)params[0];
		this.pkClass = (Class)params[1];
	}
}

하위 클래스 및 테스트 범용 코드:
 
package cn.generic;

public class Impl extends Base<String, Long> {
	
	public static void main(String[] args) {
		Impl impl = new Impl();
		System.out.println(impl.entityClass); // class java.lang.String
		System.out.println(impl.pkClass); // class java.lang.Long
	}
}

좋은 웹페이지 즐겨찾기