Java 反射 class类
2015-07-01 00:00
381 查看
构造函数跟创建对象的同时执行,构造函数可以重载,如果在建类的同时没有创建构造函数,系统会自动创建一个没有参数的构造函数。
通过反射创建对象
Java反射的概念
反射含义:可以获取正在运行的Java对象。
2、Java反射的功能
1)可以判断运行时对象所属的类
2)可以判断运行时对象所具有的成员变量和方法
3)通过反射甚至可以调用到private的方法
4)生成动态代理
3、实现Java反射的类
1)Class:它表示正在运行的Java应用程序中的类和接口
2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限
3)Constructor:提供关于类的单个构造方法的信息以及对它的访问权限
4)Method:提供关于类或接口中某个方法信息
注意:Class类是Java反射中最重要的一个功能类,所有获取对象的信息(包括:方法/属性/构造方法/访问权限)都需要它来实现
通过反射创建对象
[code=language-java]package wm_io; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; /*/ *在java中可以通过以下两种方式通过反射创建对象 *1.使用class类的newInstance() * 调用某个类的Class对象的newInstance()方法,可以获得与Class对象对应类的实例 * 注意:使用Class类的newInstance()方法,要求与之对应的类必须提供无参的构造函数。 * * 2.使用Constructor类实现 * javalang.reflect.Constructor类 * 注意:使用Constror创建对象时,应首先获得类的Class对象,然后通过Class类获得Constructor类的实例 */ public class test2 { private String classroom; public String getClassroom() { return classroom; } public void setClassroom(String classroom) { this.classroom = classroom; } private String nameString; public String getNameString() { return nameString; } public void setNameString(String nameString) { this.nameString = nameString; } public test2(){ nameString="wm"; classroom="卓越软件"; } public test2(String classroom,String nameString){ this.classroom=classroom; this.nameString=nameString; } public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException{ /*1.使用class类的newInstance() * 调用某个类的Class对象的newInstance()方法,可以获得与Class对象对应类的实例 * 注意:使用Class类的newInstance()方法,要求与之对应的类必须提供无参的构造函数。 * //使用构造方法创建类的实例 test2 test2=new test2(); //通过test2获得类的Class对象 Class c = test2.getClass(); //通过调用Class对象调用newInstance()方法,创建对象test22 test2 test22 =(wm_io.test2) c.newInstance(); //通过反射创建对象,获得类的信息 String name=test22.getNameString(); System.out.println(name);*/ /* * 2.使用Constructor类实现 * javalang.reflect.Constructor类 * 注意:使用Constror创建对象时,应首先获得类的Class对象,然后通过Class类获得Constructor类的实例 * 通过有参数的构造方法创建对象时,使用Constructor * 通过无参数的构造方法创建对象时,使用class类的newInstance() */ //获得类的class对象 Class c=test2.class; //通过Class对象获得构造器对象 Constructor constructor=c.getConstructor(); //创建类的实例 test2 test2=(wm_io.test2) constructor.newInstance(); System.out.println("姓名和班级分别是:"+test2.getNameString()+test2.getClassroom()); //下面使用有参的构造方法创建对象 //获得类的构造器对象 Constructor constructor2= c.getConstructor(String.class,String.class); //创建类的实例 test2 test22=(wm_io.test2) constructor2.newInstance("wm","卓越软件1301"); System.out.println("姓名和班级分别是:"+test22.getNameString()+test22.getClassroom()); /** * 通过反射获得类的接口 Class c2= Class.forName("wm_io.test2"); Class[] inte=c2.getInterfaces(); for(int i=0;i<inte.length;i++){ System.out.println(inte[i].getName()); }*/ /** * 通过反射获得其他类中的父类 Class c2=Class.forName("wm_io.test2"); Class su=c2.getSuperclass(); System.out.println(su.getName());*/ /** * 通过反射调用其它类中的方法 Class c2=Class.forName("wm_io.test2"); //调用sum方法 Method method = c2.getMethod("sum"); method.invoke(c2.newInstance()); */ } }
Java反射的概念
反射含义:可以获取正在运行的Java对象。
2、Java反射的功能
1)可以判断运行时对象所属的类
2)可以判断运行时对象所具有的成员变量和方法
3)通过反射甚至可以调用到private的方法
4)生成动态代理
3、实现Java反射的类
1)Class:它表示正在运行的Java应用程序中的类和接口
2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限
3)Constructor:提供关于类的单个构造方法的信息以及对它的访问权限
4)Method:提供关于类或接口中某个方法信息
注意:Class类是Java反射中最重要的一个功能类,所有获取对象的信息(包括:方法/属性/构造方法/访问权限)都需要它来实现
相关文章推荐
- 深入理解Java:注解(Annotation)基本概念
- 深入理解Java:注解(Annotation)自定义注解入门
- 深入理解Java:注解(Annotation)--注解处理器
- 代码即财富之我学Java JDBC(6)
- Spring(事务管理)
- Java-在线聊天系统-线程
- java中的日期和时间
- Java的4种代码块
- Struts1 Spring2 iBatis2 框架的集成
- SpringMVC第一次搭建
- Java基础---IO流
- [转载] Java NIO与IO
- [Java]学习笔记,随笔【七】
- 疯狂Java讲义-面向对象(1 of n)
- Java 包的使用
- java eclipse 整个项目或包查找只定字符串并替换
- 学习笔记_Java_day13_JSTL_自定义标签库(9)
- Struts2框架学习之OGNL表达式
- 学习笔记_Java_day13_JSTL标签库(1、2、3、4、5、6、7、8)
- java 类中构造函数的讲解