世界微尘里,吾宁爱与憎
反射
反射

反射

类对象

类对象,就是用于描述这种类,都有什么属性,什么方法的

获取类对象有3种方式

  • Class.forName(Xxx)
  • Xxx.class
  • new Xxx().getClass()

在一个JVM中,一种类,只会有一个类对象存在。所以以上三种方式取出来的类对象,都是一样的

package reflection;

import charactor.Hero;

public class TestReflection {

   public static void main(String[] args) {
           String className = "charactor.Hero";
           try {
               Class pClass1=Class.forName(className);
               Class pClass2=Hero.class;
               Class pClass3=new Hero().getClass();
               System.out.println(pClass1==pClass2);
               System.out.println(pClass1==pClass3);
          } catch (ClassNotFoundException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
          }
  }
}

反射机制

与传统的通过new 来获取对象的方式不同 反射机制,会先拿到Hero的“类对象”,然后通过类对象获取“构造器对象” 再通过构造器对象创建一个对象

        //传统的使用new的方式创建对象
       Hero h1 =new Hero();
       h1.name = "teemo";
       System.out.println(h1);
         
       try {
           //使用反射的方式创建对象
           String className = "charactor.Hero";
           //类对象
           Class pClass=Class.forName(className);
           //构造器
           Constructor c= pClass.getConstructor();
           //通过构造器实例化
           Hero h2= (Hero) c.newInstance();
           h2.name="gareen";
           System.out.println(h2);
      }

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注