博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射API使用实例
阅读量:5905 次
发布时间:2019-06-19

本文共 3657 字,大约阅读时间需要 12 分钟。

/**

     * 访问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
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(); } }}

 

转载地址:http://hacpx.baihongyu.com/

你可能感兴趣的文章
python __setattr__, __getattr__, __delattr__, __call__
查看>>
Understanding the CVS Structure
查看>>
「简要翻译」Apple :UI Design Dos and Don'ts
查看>>
linux 判断指定用户对指定目录具有的权限
查看>>
ART世界探险(3) - ARM 64位CPU的架构快餐教程
查看>>
Java 8简明教程
查看>>
DB2的权限管理(原创)
查看>>
QTableWidget控件使用总结
查看>>
Hi~"自霉体人",阿里巴巴UC订阅号发布会强势来袭
查看>>
使用Scrapy爬取知乎网站
查看>>
深入Java虚拟机读书笔记[8:9]
查看>>
MFS 安装手记
查看>>
智能家居433M和zigbee到底哪个比较好
查看>>
malloc与free
查看>>
乐视网发布提示性公告:55%股份解禁在即
查看>>
TCP异常终止(reset报文)
查看>>
dtd与xsd去区别
查看>>
pyqt5_站点管理_email_windows
查看>>
在linux准备Java开发环境
查看>>
Docker Pull速度太慢如何提速
查看>>