超类获得子类泛型的实际参数

不多说,先上代码,随后解释

public class GrandPa<T> {<pre name="code" class="java">
private Class<T> myClass;public GrandPa(){if (ParameterizedType.class.isAssignableFrom(super.getClass().getGenericSuperclass().getClass()))


<span style="white-space:pre">			</span>//关键的代码就这一句,<span style="font-family: Arial, Helvetica, sans-serif;">myClass,就获得了子类传进来的实际类了.</span>
			this.myClass = ((Class) ((ParameterizedType) super.getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
		System.out.println("" + myClass.toString());
	}
	
	public String toString(){
		System.out.println("" + myClass.toString());
		return null;
	}
	
}

public class Parent extends GrandPa<AEntity> {
	

}

public class Main {

	public static void main(String[] args) {
		
		Parent parent = new Parent();
		parent.toString();
	}
}
//输出
interface test.AEntity
interface test.AEntity



你可能感兴趣的:(超类获得子类泛型的实际参数)