我们可以通过反射,获取对应的运行时类中所有的属性、方法、构造器、父类、接口、父类的泛型、包、注解、异常等。。。。

典型代码:

@Test

public void test1(){

Class clazz = Person.class;

//获取属性结构

//getFields():获取当前运行时类及其父类中声明为public访问权限的属性

Field[] fields = clazz.getFields();

for(Field f : fields){

System.out.println(f);

}

System.out.println();

//getDeclaredFields():获取当前运行时类中声明的所属性。(不包含父类中声明的属性

Field[] declaredFields = clazz.getDeclaredFields();

for(Field f : declaredFields){

System.out.println(f);

}

}

@Test

public void test1(){

Class clazz = Person.class;

//getMethods():获取当前运行时类及其所父类中声明为public权限的方法

Method[] methods = clazz.getMethods();

for(Method m : methods){

System.out.println(m);

}

System.out.println();

//getDeclaredMethods():获取当前运行时类中声明的所方法。(不包含父类中声明的方法

Method[] declaredMethods = clazz.getDeclaredMethods();

for(Method m : declaredMethods){

System.out.println(m);

}

}

/*

获取构造器结构

*/

@Test

public void test1(){

Class clazz = Person.class;

//getConstructors():获取当前运行时类中声明为public的构造器

Constructor[] constructors = clazz.getConstructors();

for(Constructor c : constructors){

System.out.println(c);

}

System.out.println();

//getDeclaredConstructors():获取当前运行时类中声明的所的构造器

Constructor[] declaredConstructors = clazz.getDeclaredConstructors();

for(Constructor c : declaredConstructors){

System.out.println(c);

}

}

/*

获取运行时类的父类

*/

@Test

public void test2(){

Class clazz = Person.class;

Class superclass = clazz.getSuperclass();

System.out.println(superclass);

}

/*

获取运行时类的带泛型的父类

*/

@Test

public void test3(){

Class clazz = Person.class;

Type genericSuperclass = clazz.getGenericSuperclass();

System.out.println(genericSuperclass);

}

/*

获取运行时类的带泛型的父类的泛型

代码:逻辑性代码 vs 功能性代码

*/

@Test

public void test4(){

Class clazz = Person.class;

Type genericSuperclass = clazz.getGenericSuperclass();

ParameterizedType paramType = (ParameterizedType) genericSuperclass;

//获取泛型类型

Type[] actualTypeArguments = paramType.getActualTypeArguments();

// System.out.println(actualTypeArguments[0].getTypeName());

System.out.println(((Class)actualTypeArguments[0]).getName());

}

/*

获取运行时类实现的接口

*/

@Test

public void test5(){

Class clazz = Person.class;

Class[] interfaces = clazz.getInterfaces();

for(Class c : interfaces){

System.out.println(c);

}

System.out.println();

//获取运行时类的父类实现的接口

Class[] interfaces1 = clazz.getSuperclass().getInterfaces();

for(Class c : interfaces1){

System.out.println(c);

}

}

/*

获取运行时类所在的包

*/

@Test

public void test6(){

Class clazz = Person.class;

Package pack = clazz.getPackage();

System.out.println(pack);

}

/*

获取运行时类声明的注解

*/

@Test

public void test7(){

Class clazz = Person.class;

Annotation[] annotations = clazz.getAnnotations();

for(Annotation annos : annotations){

System.out.println(annos);

}

}

java获取运行时对象,java 面向对象(四十一):反射(五)反射应用二:获取运行时类的完整结构...相关推荐

  1. 【Java 19】反射 - 反射机制概述、获取Class实例、类的加载与ClassLoader的理解、创建运行时类的对象、获取运行时类的完整结构、调用运行时类的指定结构、动态代理

    反射机制概述.获取Class实例.类的加载与ClassLoader的理解.创建运行时类的对象.获取运行时类的完整结构.调用运行时类的指定结构.动态代理 反射 1 Java反射机制概述 1.1 Java ...

  2. Java基础知识点__获取运行时类的完整结构

    通过反射获取运行时类的完整结构 Field,method,Construuuctor,Superclass,Interface,Annotation 实现的全部接口 继承的父类 全部的构造器 全部的构 ...

  3. java中的session对象,Java对象中Response与session对象的方法是什么?

    广州达内Java培训小编了解到Java对象种类很多,有的小伙伴最不清楚的就是Response与session对象的方法,下面小编就搜集Response与session对象的方法供大家阅读.当一个客户首 ...

  4. java 引用 引用的对象,Java 引用类型简述

    强引用 ( Strong Reference ) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误 ...

  5. 运行时常量池在哪里_Java虚拟机详解(二)------运行时内存结构

    首先通过一张图了解 Java程序的执行流程: 我们编写好的Java源代码程序,通过Java编译器javac编译成Java虚拟机识别的class文件(字节码文件),然后由 JVM 中的类加载器加载编译生 ...

  6. java将长网址转换为短网址 用第三方接口 常用于生成二维码时需要

    该方法适用于任何将长网址转换为短网址. 在二维码生成的时候因为二维码生成的类会根据传入的内容生成相对应的二维码,当内容越丰富时二维码的识别就比较复杂难以识别.在此时就需要用到. 短链接,通俗来说,就是 ...

  7. java char的包装对象,Java 从Character和char的区别来学习自动拆箱装箱

    本文结构 1.Character和char 的区别: 2.自动拆箱装箱java 1.Character和char 的区别: Character是类,char基本数据类型.数组 在java中有三个类负责 ...

  8. java作用域外调用对象,Java Web应用中往往通过设置不同作用域的属性来达到通讯的目的。 如果某个对象只在同一请求中共享,通过调用哪个类 的setAttribute方法设置属性。( )...

    [多选题]客源市场定位的依据包括(). [单选题]除了诗歌创作,作者的散文成就同样引人注目,其代表性的散文集是( )? [单选题]缩窄性心包炎指各种原因引起心包脏壁层炎症.纤维素性渗出物沉积,并逐渐机 ...

  9. 【Sofice小司笔记】1 Java,包含java基础知识,集合,面向对象,反射,泛型等

    JavaSE:标准版(桌面程序,控制台) JavaME:嵌入式开发(手机) JavaEE:E企业级开发(web,服务器) JDK(Java Development Kit):整个java开发工具 JR ...

最新文章

  1. 这味儿上头,前有文言文,又来东北话,中文编程玩得挺得劲!
  2. C语言操作SQLite数据库
  3. python必须下载到c盘吗_python为什么要安装到c盘
  4. 如何在 macOS Monterey 中更改光标颜色
  5. android带投屏播放器,投屏播放器app下载
  6. Ubuntu16.04 LTS无法开启无线网开关的解决方法(联想Y7000)
  7. Echart甘特图实现效果 + 配带抽成方法 + 源码
  8. IP地址介绍,子网划分(VLSM),构造超网(CIDR) 详解
  9. 面试官最爱问的Redis(三)Redis的基本知识
  10. 大数据分析 2021年Q3酒店品牌营销网络传播特征
  11. Day2作业:购物商城
  12. DXT纹理压缩格式解析
  13. 复赛了?“移动云杯”复赛模式开启!
  14. Protege4之基础知识介绍
  15. 编程语言分类与python简介
  16. 2021年化工自动化控制仪表考试试卷及化工自动化控制仪表复审考试
  17. Unity使用滚动条Slider控制声音音量
  18. openwrt下载安装中文语言包(离线版)
  19. 卷积神经网络模型研究
  20. 深信服AC1000新设备如何开局使用

热门文章

  1. Maven的基本应用
  2. 使用base64编码把背景添加到CSS文件中
  3. delphi中保留字的属性和含义
  4. 15个Linux Yum命令实例--安装/卸载/更新
  5. Mysql 在DOS窗口下的操作
  6. JAVA中关于set()和get()方法的理解及使用
  7. 网络基础之网络模型及各分层的设备
  8. Struts2之数据标签(二)
  9. flutter PositionedTransition 实现缩放动画
  10. Mr.J-- jQuery学习笔记(十一)--事件委托