反射:
package wqeqwdad;
public class FanShe {
public static void main(String[] args)throws Exception {
//获取字节码文件的三种方式
//方式一
Xue x=new Xue();
Class c1 = x.getClass();
//方式二
Class c2=Xue.class;
//方式三
Class c3=Class.forName("wqeqwdad.Xue");
}
}
class Xue{
private String name;
int age;
public Xue() {}
public Xue(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class FanShe {
public static void main(String[] args)throws Exception {
Class c=Class.forName("wqeqwdad.Xue");
//获取构造方法
//Constructor[] c1 = c.getConstructors(); //获取所有的构造方法(不包括私有的)
Constructor [] con=c.getDeclaredConstructors();//获取所有的构造方法,包括私有的
//遍历
for(Constructor con1:con){
System.out.println(con1);
}
//获取单个的构造方法
Constructor c1 = c.getConstructor(String.class,int.class);
Object obj= c1.newInstance("小明",22);
System.out.println(obj);
}
}
class Xue{
private String name;
int age;
public Xue() {}
public Xue(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return name+"--"+age;
}
}
public class FanShe {
public static void main(String[] args)throws Exception {
Class c=Class.forName("wqeqwdad.Xue");
//获取成员变量 (所有的包括私有的)
Field[] f = c.getDeclaredFields();
//遍历
for(Field f1:f){
System.out.println(f1);
}
//无参构造创建对象
Constructor con = c.getConstructor();
Object obj=con.newInstance();
//获取单个成员变量
Field ff = c.getDeclaredField("name");
//java 不检查
ff.setAccessible(true);
ff.set(obj, "小白");
System.out.println(obj);
}
}
class Xue{
private String name;
int age;
public Xue() {}
public Xue(String name) {
this.name = name;
}
public Xue(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return name+"--"+age;
}
}
获取所有方法
getMethods
getDeclaredMethods
public class FanShe {
public static void main(String[] args)throws Exception {
Class c=Class.forName("wqeqwdad.Xue");
//获取方法 (所有的包括私有的)
Method[] m = c.getDeclaredMethods();
for(Method m1:m){
System.out.println(m1);
}
}
}
class Xue{
private String name;
int age;
public Xue() {}
public Xue(String name) {
this.name = name;
}
public Xue(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return name+"--"+age;
}
public void kk(){
}
public void uu(){
}
}