1,spring中一配置了<bean></bean>再启动项目的时候就会自动创建该类的实例。
2,java内存那块还得继续深入。
3,上代码:
- public class subParam extends param<myclass, myinvoke> { //subParam 继承了param 。param里面俩范型
- public static void main(String[] args) throws Exception{
- subParam s = new subParam(); //子类一实例化,父类的构造函数里有乾坤
- }
- }
- public class param<T1, T2> {
- class A {}
- class B extends A {}
- private Class<T1> entityClass;
- protected param (){
- Type type = getClass().getGenericSuperclass(); //先得到当前类的Class,在得到当前类的父范型Class
- System.out.println("getClass()==" + getClass());
- System.out.println("type = " + type);
- Type trueType = ((ParameterizedType)type).getActualTypeArguments()[0]; //强转为 可范型化的类型,得到父范型的真实的类的参数。
- System.out.println("trueType1 = " + trueType);
- trueType = ((ParameterizedType)type).getActualTypeArguments()[1];
- System.out.println("trueType2 = " + trueType);
- this.entityClass = (Class<T1>)trueType;
- B t = new B();
- type = t.getClass().getGenericSuperclass();
- System.out.println("B is A's super class :" + ((ParameterizedType)type).getActualTypeArguments().length); //有时候强转会报异常。
- }
- }
public static <T> Class<T> getClassGenricType(final Class clazz) //第一个<T> 只是声明范型,没有别的意思。
{
return getClassGenricType(clazz, 0);
}