1.新建 一个java 类
public class Person {
private String username;
private String password;
private Integer age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Person() {
}
private Person(String name) {
this.username = name;
}
Person(String name, int age) {
this.username = name;
this.age = age;
}
public Person(String name, int age, String password) {
this.username = name;
this.age = age;
this.password = password;
}
public void say(){
System.out.println( "hello");
}
public void method(String s) {
System.out.println("method " + s);
}
public String getString(String s, int i) {
return s + "---" + i;
}
private void function() {
System.out.println("我是私有方法");
}
@Override
public String toString() {
return "Person [username=" + username + ", age=" + age + ", password=" + password
+ "]";
}
}
2.获取class对象
Class cla= Person.class;
Class cla1=new Person().class;
Class cla =Class.forName("com.my.study.Person");
3.获取对象的属性
//获取所有对象的所有属性包括私有的
Field[] declaredFields = cla.getDeclaredFields();
//获取所有属性 不包括私有的
Field[] declaredFields = cla.getFields();
//获取所有方法 包括私有的
Method[] methods = clazz.getDeclaredMethods();
//获取所有方法 不包括私有的
Method[] methods = clazz.getMethods();
//实例化对象
Object obj=cla.getConstructor().newInstance();
//给私有属性赋值
Field field=cla.getField("username");
//暴力设置权限
field. setAccessible(true);
//赋值
field.set(obj,"张三");
//获取指定无参方法
Method m=cla.getMethod("say");
//获取指定有参方法 参数是方法的类型.class
Method m1=cla.getMethod("getString",String.class,int.class)
//获取私有方法
Method m2=cla.getDeclaredMethod("function")
//执行无参方法
m.invoke(obj);
//执行有参方法 有返回值
Object str=m1.invoke(obj,"张三",11);
//执行私有方法
m2.setAccessible(true);
m2.invoke(obj);