zoukankan      html  css  js  c++  java
  • 透彻分析反射的基础---class类

    反射的基石---class

      反射就是把java类中的各种成分映射成相应的java类.例如:一个java类中用一个class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等信息也用一个个的java类来表示,就像汽车是一个类,汽车中的 发动机,变速箱等等也是一个类.表示java类的class类显然要提供一系列的方法来获取其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,他们是field,method,contructor,package等.

     

    java程序中的各个java类属于同一个类事物,描述这类事物的java类名就是class.
    什么是字节码:当在源程序中用到了person这个类的时候,首先将这个类的class编译的二级制编码加载到内存中来,然后再用这个二进制将它复制成一个个对象来.
    如何得到各个字节码对应的实例对象或者说是获取class类
    一共有三种方式:
    1.类名.class,例如:System.class
    2.对象.class,例如new Date().getClass
    3.Class.forName("类名");例如:Class.forName("java.lang.String");

    public class ReflectDemo {
    	public static void main(String[] args) throws ClassNotFoundException {
    		// 方式1
    		Person p = new Person();
    		Class c = p.getClass();
    
    		Person p2 = new Person();
    		Class c2 = p2.getClass();
    
    		System.out.println(p == p2);// false
    		System.out.println(c == c2);// true
    
    		// 方式2
    		Class c3 = Person.class;
    		// int.class;
    		// String.class;
    		System.out.println(c == c3);
    
    		// 方式3
    		// ClassNotFoundException
    		Class c4 = Class.forName("Reflect.Person");
    		System.out.println(c == c4);
    	}
    }
    

    总结:

      要想解剖一个类,必须先获取到该类的字节码文件对象,而解剖是用的就是class类中的方法,class文件在反射中起到了基石的作用.



  • 相关阅读:
    贴代码链接
    Full Tank?
    NEERC 2012
    POJ Function Run Fun
    C. Points on Line codeforces 127
    Frequent values
    统计的力量——线段树详细教程
    建筑行业专业咨询公司 _ 捷盟咨询(第一家)
    福建顶点Livebos PK 杭州德昌隆Partin/C,开发平台之间的对决,谁更敏捷?
    寻找 JAVA 控件,彗都控件网\中国控件网(http://www.evget.com)http://www.componentcn.com/
  • 原文地址:https://www.cnblogs.com/chenxiaochan/p/7253400.html
Copyright © 2011-2022 走看看