java获取实体类的属性和值
package com.jackie.day11;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
/**
?* Java通過實例得到實體類中的屬性和方法
?* @author Administrator
?*
?*/
public class ReflectTest {
? ? public static void main(String[] args)
? ? ? ? ? ? throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
? ? ? ? Student student = new Student();
? ? ? ? student.setBirthday(new Date());
? ? ? ? student.setGender(false);
? ? ? ? student.setId(3);
? ? ? ? student.setName("王五");
? ? ? ? student.setScore(99);
? ? ? ? // 通過實例得到類
? ? ? ? @SuppressWarnings("rawtypes")
? ? ? ? Class studentClass = (Class) student.getClass(); // studentClass
? ? ? ? /*
? ? ? ? ?* 得到類中的所有屬性集合
? ? ? ? ?*/
? ? ? ? Field[] field = studentClass.getDeclaredFields();
? ? ? ? for (int i = 0; i < field.length; i++) {
? ? ? ? ? ? Field f = field[i];
? ? ? ? ? ? int size = field.length;// 屬性個數
? ? ? ? ? ? f.setAccessible(true); // 設置些屬性是可以訪問的
? ? ? ? ? ? String type = f.getType().toString();// 得到此屬性的類型
? ? ? ? ? ? String key = f.getName();// key:得到屬性名
? ? ? ? ? ? Object value = null;// 得到此屬性的值
? ? ? ? ? ? value = f.get(student);
? ? ? ? ? ? //System.out.println("屬性個數:" + size + "\t 類型:" + type + "\t 屬性名:" + key + "\t 屬性值 : " + value);
? ? ? ? ? ? if (key.endsWith("name")) {
? ? ? ? ? ? ? ? f.set(student, "張三");// 給屬性設值
? ? ? ? ? ? ? ? System.out.println(student);
? ? ? ? ? ? } else if (key.endsWith("id")) {
? ? ? ? ? ? ? ? f.set(student, 6);
? ? ? ? ? ? ? ? System.out.println(student);
? ? ? ? ? ? } else if (key.endsWith("gender")) {
? ? ? ? ? ? ? ? f.set(student, true);
? ? ? ? ? ? ? ? System.out.println(student);
? ? ? ? ? ? } else if (key.endsWith("birthday")) {
? ? ? ? ? ? ? ? f.set(student, new Date());
? ? ? ? ? ? ? ? System.out.println(student);
? ? ? ? ? ? } else if (key.endsWith("score")) {
? ? ? ? ? ? ? ? f.set(student, 44);
? ? ? ? ? ? ? ? System.out.println(student);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? /*
? ? ? ? ?* 得到類中所有方法的集合
? ? ? ? ?*/
? ? ? ? Method[] methods = studentClass.getMethods();
? ? ? ? for (int i = 0; i < methods.length; i++) {
? ? ? ? ? ? Method method = methods[i];
? ? ? ? ? ? if (method.getName().startsWith("get")) {
? ? ? ? ? ? ? ? System.out.print("類中的get方法:" + method.getName() + "\t");
? ? ? ? ? ? ? ? System.out.println("get方法的值:" + method.invoke(student));
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
class Student {
? ? private String name;
? ? private Integer id;
? ? private boolean gender;// true:男;false:女
? ? private Date birthday;
? ? private int score;
? ? public Student() {
? ? }
? ? public Student(Integer id, String name, int score, Date birthday, boolean gender) {
? ? ? ? super();
? ? ? ? this.id = id;
? ? ? ? this.name = name;
? ? ? ? this.score = score;
? ? ? ? this.birthday = birthday;
? ? ? ? this.gender = gender;
? ? }
? ? public Integer getId() {
? ? ? ? return id;
? ? }
? ? public void setId(Integer id) {
? ? ? ? this.id = id;
? ? }
? ? public String getName() {
? ? ? ? return name;
? ? }
? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }
? ? public int getScore() {
? ? ? ? return score;
? ? }
? ? public void setScore(int score) {
? ? ? ? this.score = score;
? ? }
? ? public Date getBirthday() {
? ? ? ? return birthday;
? ? }
? ? public void setBirthday(Date birthday) {
? ? ? ? this.birthday = birthday;
? ? }
? ? public boolean isGender() {
? ? ? ? return gender;
? ? }
? ? public void setGender(boolean gender) {
? ? ? ? this.gender = gender;
? ? }
? ? @Override
? ? public String toString() {
? ? ? ? return "Student [id=" + id + ", name=" + name + ", score=" + score + ", birthday=" + birthday + ", gender="
? ? ? ? ? ? ? ? + gender + "]";
? ? }
}
總結
以上是生活随笔為你收集整理的java获取实体类的属性和值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关键帧 关于decode_one_fr
- 下一篇: 为什么借助开源学习是最有效的?