您的位置:首页 > 编程语言 > Java开发

JAVA反射和CLASS类

2010-01-04 10:56 375 查看
感谢原文作者:http://blog.sina.com.cn/s/blog_62a6ceb10100gwe0.html

 

JAVA其实不算是一门动态语言,但JAVA中却又一种机制可以达到动态的某中效果,这就是JAVA中的反射。

     JAVA反射指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。

     都Java有个Object class,是所有Java classes的继承根源,其内声明了数个应该在所有Java class中被改写的methods:hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回一个Class 对象。

    Class class十分特殊。它和一般classes一样继承自Object,其实体用以表达Java程序运行时的classes和interfaces,也用来表达enum、array、primitive Java types(boolean, byte, char, short, int, long, float, double)以及关键词void。当一个class被加载,或当加载器(class loader)的defineClass()被JVM调用,JVM 便自动产生一个Class object

 

产生Class对象的三种常用方法:

    Class c1 = Class.forName ("指定你要产生对象的类的全路径");

   

    String str = "abc";

  Class c1 = str.getClass();//基本数据类型也可以获得Class对象。

    //创建对象,对象点 getClass(); 

     Button b = new Button();

    Class c1 = b.getClass();
   //根据基本数据类型的包装类来获取对象
    Class c1 = Boolean.TYPE;

  Class c2 = Byte.TYPE;

  Class c3 = Character.TYPE;

  Class c4 = Short.TYPE;

  Class c5 = Integer.TYPE;

  Class c6 = Long.TYPE;

  Class c7 = Float.TYPE;

  Class c8 = Double.TYPE;

  Class c9 = Void.TYPE;

得到未知属性:

    Field[] field = 类对象.getDeclaredFields();  //它是得到所有属性  所以返回的是数组

    Field[] field1 = 类对象.getFileds() //它是得到所有公共属性。

    field[] filed2 = 类对象.getDeclaredField(); //得到单个属性

    field[] filed2 = 类对象.getField();  //得到单个公共的属性

得到未知方法

   getMethods()是得到所有公共方法。

   getDeclaredFields()是得到全部方法

   getDeclaredField()是得到单个方法

   getMethod() 是得到单个公共方法。

 

注意的是操作属性要先创建对象,(newInstance)

调用方法(invoke)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息