首先定义一个JAVA实体
package serializable;
import java.io.Serializable;
/**
* @author fyj:
* @version 创建时间:2018年1月9日 上午11:03:51
* 类说明
*/
public class Entity implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String comment;
public Entity(){
this.name="test";
this.comment="comment";
}
public String getName() {
return name;
}
@SuppressWarnings("unused")
private void setName(String name) {
this.name = name;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}
接下来是获取私有值name并修改,获取私有方法setName,并调用(展示实体内容用了fastjson)
package serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import com.alibaba.fastjson.JSON;
/**
* @author fyj:
* @version 创建时间:2018年1月9日 下午2:30:32
* 类说明
*/
public class Clazz {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
Entity entity = new Entity();
System.out.println(JSON.toJSON(entity));
Class clazz = entity.getClass();
Field f;
try {
f =clazz.getDeclaredField("name");
f.setAccessible(true);
f.set(entity, "test1");
System.out.println(JSON.toJSON(entity));
} catch (Exception e) {
e.printStackTrace();
}
Method method;
try {
method = clazz.getDeclaredMethod("setName",String.class);
method.setAccessible(true);
method.invoke(entity,"test2");
System.out.println(JSON.toJSON(entity));
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果
{"name":"test","comment":"comment"}
{"name":"test1","comment":"comment"}
{"name":"test2","comment":"comment"}