JAVA反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java的反射机制。

  • Java反射的作用?

假如有两个程序员,一个程序员在写程序的时需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代码是不能通过编译的。此时,利用Java反射的机制,就可以让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。

 

  • Class类的使用
    • OOP的世界里,万事万物皆对象。类是谁的对象呢?——类是对象,类是java.lang.Class类的实例对象!There is a class named class.
    • 实例:
    • //有一个类
      class Foo {
                     void print() {System.out.println("Foo");}  
      }
      
      //在main函数里:
      public static void main(String[] args) {
              //Foo这个类也是一个实例对象,Class类的实例对象,如何表示呢
              
              //任何一个类都是Class类的实例对象,这个实例对象有三种表示方式
              //1. --实际在告诉我们,任何一个类都有一个隐含的静态成员变量-class
              Class c1 = Foo.class;
              
              //2. 已知该类的对象通过getClass 方法
              Foo f1 = new Foo();
              Class c2 = f1.getClass();
              
              //c1, c2表示了Foo类的类类型(class type)
              //指类也是一个对象,是class类的实例对象,这个对象就成为该类的类类型
              
              //不管从c1,c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象
              System.out.println(c1 == c2); //true
              
              //3.
              Class c3 = null;
              try {
                  c3 = Class.forName("com.immoc.reflect.Foo");
              } catch (ClassNotFoundException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
                  System.out.println(c3 == c2); //true
      
      
              /*
               * 我们可以通过类的类类型创建对象实例;
               * 通过c1 or c2 or c3创建Foo类的对象
               */
              try {
                  Foo foo = (Foo)c1.newInstance(); //需要有无参的构造方法
                  foo.print();
              } catch (InstantiationException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (IllegalAccessException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
          }    
      View Code

相关文章: