//class反射编程
//定义一个学生类
public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.name=name;this.age=age;}public test124(String name,int age,double money){this.name=name;this.age=age;this.money=money;}//看书public void learn(BookRead book){System.out.println( "我的名字"+name+ "我正在学习"+book.getName());}//奔跑public void run(){System.out.println( "我们喜欢奔跑" );}
}
定义
public class BookRead {private String name;public void setName(String name) {this.name = name;}public String getName() {return name;}
}
测试
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;public class test126 {/*使用class实现反射编程,创建对象,获取类的相关信息* */public static void main(String[] args){String packageName=test124.class.getPackage().getName();System.out.println( "包名"+packageName);try {Class<?> stuClass=Class.forName( "test124" );System.out.println( stuClass.getName() );//使用字节码对象获取这个对象的实例//test124 stuObj=(test124)stuClass.newInstance();//System.out.println(stuObj!=null );//获取类的访问级别System.out.println( stuClass.getModifiers()== Modifier.PUBLIC );//获取所有公共级别的字段(成员属性)Field[] fields=stuClass.getFields();System.out.println(fields.length );//所有访问级别的成员属性System.out.println(stuClass.getDeclaredFields().length );//获取类中的构造器Constructor con0= stuClass.getConstructor( String.class,Integer.class );System.out.println( con0!=null );//获取类中定义的方法Method[] methods=stuClass.getMethods();System.out.println( methods.length );for(Method m:methods){System.out.println( m );}}catch (Exception e){}}
}
运行结果