10、(知识篇)JAVA反射(2)

来源:互联网 发布:我国能源现状数据 编辑:程序博客网 时间:2024/05/21 17:00
import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;public class Test{public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {//反射获取泛型此参数DaoImpl dao = new DaoImpl();//获取父类带泛型的类型Type[] types = dao.getClass().getGenericInterfaces();//循环父类带泛型类型的类for (Type type : types) {//将Type强转为ParameterizedType类型ParameterizedType parameterizedType = (ParameterizedType) type;//获取泛型参数Type[] argss = parameterizedType.getActualTypeArguments();for (Type arg : argss) {//获得泛型类型Object student = Class.forName(arg.getTypeName()).newInstance();System.out.println("arg == "+ student);}}}}interface Dao<T>{int add(T obj);}class DaoImpl implements Dao<Student>{public DaoImpl() throws ClassNotFoundException, InstantiationException, IllegalAccessException {super();}@Overridepublic int add(Student obj) {// TODO Auto-generated method stubreturn 0;}}class Student{private String name;private int age;public Student() {super();// TODO Auto-generated constructor stub}public Student(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}}

0 0