工程目录
新建一个Java控制台项目即可;
代码
Student.java
实体类
package com.study.demo02;
public class Student {
private int id;
private String studentName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
}
People.java
泛型类
package com.study.demo02;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class People<T> {
public int getId(T t){
try{
Class<? extends Object> tClass = t.getClass();
//整合出 getId() 属性这个方法
Method m = tClass.getMethod("getId");
//调用这个整合出来的get方法,强转成自己需要的类型
int id = (int)m.invoke(t);
return id;
}catch(Exception e){
return -1;
}
}
}
Demo02.java
测试类
package com.study.demo02;
/**
* 通过反射机制访问泛型T中的方法
*/
public class Demo02 {
public static void main(String[] args) {
People<Student> people = new People<Student>();
Student stu = new Student();
stu.setId(2);
System.out.println(people.getId(stu));
}
}
说明
上面的方法看起来并没有什么特别的用处,但实际上给了我们将公用方法提到泛型类中的一个途径;
参考
https://www.cnblogs.com/xuehuashanghe/p/10483803.html