Java中的Type详解

Java中的Type详解

ParameterizedType 参数化类型的使用

package com.keytop.att;

/**
 * 实体类
 * Created by fengwenhua on 2017/4/25.
 */

public class UserTest {
    private String userName;
    private String description;

    public UserTest(){
        this.userName = "Deity";
        this.description = "新晋段子手";
        System.out.println("大名:"+userName+"&简介:"+description);
    }

    //Getter & Setter ...
}
package com.keytop.att;

import org.junit.Test;

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

/**
 * 参数化类型使用
 * Created by fengwenhua on 2017/4/25.
 */

public class ClazzUtils {

    /**超类*/
    public class TestSuperClazz{

    }

    /**子类*/
    public class TestClazz extends TestSuperClazz{

    }

    @SuppressWarnings("unchecked")
    public  T getGenericInstance(Class clazz){
        Type type = ((ParameterizedType)clazz.getGenericSuperclass()).getActualTypeArguments()[0];
        try {
            T instance = ((Class)type).newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    @SuppressWarnings("unchecked")
    @Test
    public void test() throws IllegalAccessException, InstantiationException {
        getGenericInstance(TestClazz.class);
    }
}
单元测试执行结果

你可能感兴趣的:(Java中的Type详解)