Java反射API使用实例
2016-08-03 15:10
381 查看
/**
* 访问Class对应的类所包含的注释:getAnnotation();getDelaredAnnotation();
* 访问Class对应的类所包含的内部类:getDeclaredClasses()
* 访问Class对应的类所包含的外部类getDeclaringClass()
* 访问Class对应的类所继承的父类和实现的接口等:
* getModifiers()返回此类或接口的所有修饰符
* Class[] getInterfaces() 返回该Class对象对应类所实现的全部接口
* getPackage();获取此类的包
* getName();以字符串形式返回此Class对象所表示的类的名称
* getSimpleName()以字符串形式返回此Class对象所表示类的简称
* getSuperclass()返回该Class所表示的类的超类对应的Class对象
*/
ReflectDemo.java
TestReflectDemo.java
* 访问Class对应的类所包含的注释:getAnnotation();getDelaredAnnotation();
* 访问Class对应的类所包含的内部类:getDeclaredClasses()
* 访问Class对应的类所包含的外部类getDeclaringClass()
* 访问Class对应的类所继承的父类和实现的接口等:
* getModifiers()返回此类或接口的所有修饰符
* Class[] getInterfaces() 返回该Class对象对应类所实现的全部接口
* getPackage();获取此类的包
* getName();以字符串形式返回此Class对象所表示的类的名称
* getSimpleName()以字符串形式返回此Class对象所表示类的简称
* getSuperclass()返回该Class所表示的类的超类对应的Class对象
*/
ReflectDemo.java
package com.pb.reflect.classinfo; /** * * @author Administrator * 1、包 * 2、注解 * 3、构造方法 * 4、方法 * 5、内部类 * */ @SuppressWarnings(value="unchecked") @Deprecated public class ReflectDemo { //私有构造方法 private ReflectDemo(){ } //公有的带name参数的构造方法 public ReflectDemo(String name){ } public void info(){ } public void info(String str){ } class inner{ } }
TestReflectDemo.java
package com.pb.reflect.classinfo; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.Method; public class TestReflectDemo { public static void main(String[] args) { //下面的代码可以获取ReflectDemo的Class对象 Class<ReflectDemo> class1 = ReflectDemo.class; //获取ReflectDemo中全部的构造方法 Constructor[] constructor = class1.getDeclaredConstructors(); System.out.println("########ReflectDemo全部的构造方法########"); for (Constructor constructor2 : constructor) { System.out.println(constructor2.toString()); } //获取ReflectDemo的public构造方法 System.out.println("########ReflectDemo公共的构造方法########"); Constructor[] constructor1=class1.getConstructors(); for (Constructor constructor2 : constructor1) { System.out.println(constructor2.toString()); } //获取ReflectDemo的public 的方法 System.out.println("########ReflectDemo公共的方法########"); Method[] methods=class1.getDeclaredMethods(); for (Method method : methods) { System.out.println(method.toString()); } //获取对应类的指定方法,方法名、方法参数的类型,找到info方法,info带的参数类型是String try { System.out.println("########ReflectDemo带有String类型参数的info方法########"); Method method=class1.getMethod("info", String.class); System.out.println(method.toString()); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 获取ReflectDemo的全部注释 Annotation[] annotation=class1.getAnnotations(); System.out.println("########ReflectDemo所有的注释 信息#####"); for (Annotation annotation2 : annotation) { System.out.println(annotation.toString()); } //获取ReflectDemo的包信息 Package package1 = class1.getPackage(); System.out.println(package1.toString()); // 获取ReflectDemo的内部类 Class[] inners = class1.getDeclaredClasses(); System.out.println("########ReflectDemo所有的内部类#####"); for (Class class2 : inners) { System.out.println(class2.toString()); } try { Class inclass = Class.forName("com.pb.reflect.classinfo.ReflectDemo$inner"); // 输出内部类的信息 System.out.println("########ReflectDemo所有的内部类的信息"); System.out.println("inclass对应类的外部类为:"+inclass.getDeclaringClass()); System.out.println("inclass对应类的包为:"+inclass.getPackage()); System.out.println("inclass对应类的父类为:"+inclass.getSuperclass()); System.out.println("inclass对应类的名称为:"+inclass.getName()); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
相关文章推荐
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- PHP反射使用实例和PHP反射API的中文说明
- Java使用new和反射实例化内部类对象
- java 8 新特性 时间api使用实例
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- java反射使用实例
- HBase java API 使用实例(一)——增加、修改、删除
- Java反射及使用实例
- Java反射学习总结四(动态代理使用实例和内部原理解析)
- Java反射使用实例(http实体类转换)
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- java反射和自定义注解的使用实例
- 使用java反射根据参数返回类的实例
- PHP反射使用实例和PHP反射API的中文说明
- java学习---使用反射创建类的实例
- Java使用新浪微博API通过账号密码方式登陆微博的实例
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- java使用反射实例
- Java反射学习总结四(动态代理使用实例和内部原理解析)