你的位置:首页 > Java教程

[Java教程][javaSE] 反射


JAVA-Reflect 专题

①Class类的使用

②方法的反射

③成员变量的反射

④构造函数的反射

⑤java类的加载机制

 

Ⅰ在面向对象的世界里,万事万物皆为对象

类是对象,类是java.lang.Class类的实例对象

ⅡClass类的实例对象有三种表示方式

 

//第一种表达方式(已知类名)

//第二种表达方式(已知对象)

//第三种表达方式(通过类全称)

 

package com.tsh.reflect;public class ReflectDemo {  public static void main(String[] args) {    Foo foo1=new Foo();    //Class类的实例对象    //第一种表达方式(已知类名)    Class c1=Foo.class;        //第二种表达方式(已知对象)    Class c2=foo1.getClass();        //第三种表达方式(通过类全称)    Class c3=null;    try {      c3=Class.forName("com.tsh.reflect.Foo");    } catch (ClassNotFoundException e) {      e.printStackTrace();    }        //官网解释:c1和c2表示了Foo类的类类型(class type)    //一个类只可能是Class类的一个对象,因此下面的输出true    System.out.println(c1==c2);        //可以通过类的类类型创建该类的实例对象    try {      //该类需要有无参数的构造方法      Foo foo2=(Foo) c1.newInstance();      foo2.print();    } catch (InstantiationException e) {      e.printStackTrace();    } catch (IllegalAccessException e) {      e.printStackTrace();    }      }}class Foo{  void print(){    System.out.println("test");  }}