Field作为反射中对应类或对象中的域或者叫做属性的操作类,除了我前一篇文章中的得到名字和类型等,Field的作用不限于此。
Java SE 8的Docs这样说:A Field provides information about, and dynamic access to, a single field of a class or an interface. The reflected field may be a class (static) field or an instance field.
简单理解就是:我们可用通过Field类对类或对象的field进行动态操作。
关于Field的一些方法:
返回值 名字和参数 作用
Object get(Object obj) 返回这个object对应field字段的Object
xxx getXXX(Object obj) 同上,不过XXX可以是Int,Char,Boolean等
void set(Object obj, Object value) 设置obj对象的调用方法的这个field的值为value
void setXXX(Object obj, XXX value) 设置特定类型值,例setInt(Object obj,int value)
Class getDeclaringClass() 返回定义中的Class对象
String getName() 得到名字的字符串
int getModifier() 返回一个修饰符的值
Class getType() 返回这个field的对象Class
void setAccessible(boolean flag) 设置是否允许set get
boolean isAccessible() 查看field是否允许set和get。
… … …
其他的可以去Java的官方文档去查看。https://docs.oracle.com/javase/8/docs/api/
简单案例:
package io.ilss.reflection;
/**
* className User
* description User
*
* @author feng
* @version 1.0
* @date 2019-01-26 19:11
*/
public class User {
private String username;
private String password;
private int sex;
public String address; //注意这个是public
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
...//getter setter method
}
package io.ilss.reflection;
import java.lang.annotation