天天看点

java173-class反射编程方法

//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){
  
         }
     }
 }      

运行结果

java173-class反射编程方法