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)
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)
相关文章推荐
- java反射Class类详解
- Java内省和反射机制三步曲之(1) Class类
- java.lang.Class类和反射机制创建对象
- Java中的反射机制(五) 关于Class类的补充说明
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
- 黑马程序员:java中的Class类和反射(一)
- Java反射(一)Class类对象
- Java 反射:Class类,动态加载类获取方法和成员变量构造信息,方法反射的基本操作,集合泛型的本质
- 黑马程序员——【Java反射学习】Class类的使用
- Class类与JAVA反射
- Java反射学习总结(1)——Class类的使用
- java反射之Class类、构造器、方法、字段、数组
- Java学习,数组的相关操作,封装类,Class类,反射API
- Java反射第一课认识Class类
- Java 反射 Class类
- java中Class类和反射机制
- Java_反射_Class类(Method,Field,Constructor)
- java反射之Class类
- 黑马程序员-JAVA学习之反射以及Class类的常用方法
- java反射 -Class类