码迷,mamicode.com
首页 > 编程语言 > 详细

Java反射机制

时间:2016-09-12 17:07:56      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

java反射机制

java.lang.Class

反射机制中主要掌握的类

 
x
java.lang.Class 
java.lang.reflect.Constructor
java.lang.reflect.Field
java.lang.reflect.Methond
java.lang.reflect.Modifier

反射机制的作用

? 1.反编译 .class->.java

? 2.通过反射机制访问java对象的属性,方法,构造方法等

获取Class类型对象的三种方式

 
xxxxxxxxxx
public class Employee{
  //Field
  private String name;
  public Employee(){}
  public Employee(String name){
   this.name=name;
  }
  //方法
  public void work(){
   System.out.println(name+"在工作!");
  }
}

编译此类 生成Employee.class文件

 
x
?
public class ReflectTest01{
  public static void main(String[] arg){
   //第一种方法
   class c1=class.forName("Employee");//c1引用保存内存地址指向堆中的对象,该对象代表的是Employee整个类。
   //第二种方法
   class c2=Employee.class;//每个类型都有class属性。
   //第三种方法
   //java语言中任何一个java对象都有getClass方法
     Employee e=new Employee();
     Class c3=e.getClass();//c3是运行时类(e的运行时类是Employee)
   
   //因为Employee这个类在JVM中只有一个,所以c1,c2,c3的内存地址是相同的,指向堆中唯一的一个对象。
   System.out.println(c1==c2);//true
   System.out.println(c2==c3);//true
   
   class c4=Date.class;//c4代表Date这个类
   class c5=class.forName("java.util.Date");//必须写类全名,类全名带有包名
   
   Date d=new Date();
   class c6=d.getClass();
  }
}
 
xxxxxxxxxx
?
public class ReflectTest02{
  public static void main(String[] args)throw Exception
  {
   //将A.class文件装载到JVM中的过程
   //Class.forName("A");
   //不会执行静态语句块
   //class c=A.Class;
  }
}
class A{
  static{
   System.out.println("0000");
  }
}

Java反射机制

标签:

原文地址:http://www.cnblogs.com/kq-L/p/5865286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!