Java反射机制

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");
  }
}

转载于:https://www.cnblogs.com/kq-L/p/5865286.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值