实体类
package com.tset.entity;
//生成所有参数的构造器
public class Person {
//班级名称
@A(classType = "班级名称", isObj = false, classPath = "")
private String className;
//班级分数
@A(classType = "班级分数")
private double classScore;
//小组名称
@A(classType = "小组名称")
private String groupName;
//小组分数
@A(classType = "小组分数")
private double groupScore;
//人物姓名
@A(classType = "人物姓名")
private String personName;
//人物总分
@A(classType = "人物总分")
private double personScore;
//学科名称
@A(classType = "学科名称")
private String subjectName;
public Person() {
}
public Person(String className, double classScore, String groupName, double groupScore, String personName, double personScore, String subjectName, double subjectScore) {
this.className = className;
this.classScore = classScore;
this.groupName = groupName;
this.groupScore = groupScore;
this.personName = personName;
this.personScore = personScore;
this.subjectName = subjectName;
this.subjectScore = subjectScore;
}
//学科分数
private double subjectScore;
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public double getClassScore() {
return classScore;
}
public void setClassScore(double classScore) {
this.classScore = classScore;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public double getGroupScore() {
return groupScore;
}
public void setGroupScore(double groupScore) {
this.groupScore = groupScore;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public double getPersonScore() {
return personScore;
}
public void setPersonScore(double personScore) {
this.personScore = personScore;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public double getSubjectScore() {
return subjectScore;
}
public void setSubjectScore(double subjectScore) {
this.subjectScore = subjectScore;
}
}
注解
package com.tset.entity;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
public @interface A {
String classType();
boolean isObj() default false;
String classPath() default "";
}
执行方法
package com.tset.excel;
import com.tset.entity.A;
import com.tset.entity.Person;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class TEST {
public static void main(String[] args) throws IllegalAccessException, ClassNotFoundException {
List<Person> list = new ArrayList<>();
Person person =new Person();
person.setClassName("java");
person.setPersonScore(1.1);
person.setClassScore(2.2);
person.setGroupName("fenz");
Field[] declaredFields = person.getClass().getDeclaredFields();
for (Field declaredField : declaredFields) {
A annotation = declaredField.getAnnotation(A.class);
if (annotation != null && annotation.isObj()) {
String classPath = annotation.classPath();
declaredField.setAccessible(true);
Object val = declaredField.get(person);
Class<?> aClass = Class.forName(classPath);
if (aClass.isInstance(val)) {
// 处理流程
}
}
if (annotation != null) {
String key = annotation.classType();
declaredField.setAccessible(true);
Object val = declaredField.get(person);
System.out.println("key:"+key+", value:"+val);
}
}
}
}