Java Reflection 教程(2): Classes 类定义

Reflection 让你轻松搞定Reflection(反射) 立即下载

使用Java Reflection (有翻译成反射的)API可以在程序运行时动态查询类的定义,查询类的定义是使用Java Reflection API 所要作的第一件事.

也就是说所有反射操作的入口点为java.lang.Class 类。有下面几种方法可以取得某个数据类型对应的Class类:

Object.getClass()

当可以访问一个类型的实例对象时,一个简单的方法使用通过Object.getClass() 来取得该对象的类型定义,如下例可以取得String的类定义:

Class c = "foo".getClass();


 

使用 .class

如果已知某个类的类型,可以直接使用.class 来取的类的定义,这也是用来取的基本数据类型(如boolean,int等)的方法。

boolean b;
Class c = b.getClass();   // compile-time error
 
Class c = boolean.class;  // correct


 

注: 不能使用b.getClass() 来取的boolean 的类型定义,这是因为基本数据类型无法dereferenced.

Class.forName()

如果知道类的全名称,可以使用Class.forName() 来取得该类的类定义。如:

Class c = Class.forName("com.duke.MyLocaleServiceProvider");


取的对应的数组类型的类型定义可以使用”[".

Class cDoubleArray = Class.forName("[D");
 
Class cStringArray = Class.forName("[[Ljava.lang.String;");

TYPE 域

对应基本数据类型,除了使用.class 方法外,还可以使用其对应的Type 成员。如:

Class c = Double.TYPE;
Class v = Void.TYPE;

有了类对应的Class 定义之后,可以获取类的:

  • Class Name 类名称
  • Class Modifies (public ,private ,synchronized etc) 类修饰符
  • Package Info 类所在包的信息。
  • Superclass 父类定义
  • Implemented Interfaces 类实现的接口定义
  • Constructors 类构造函数定义
  • Methods 类方法定义
  • Fields 类成员变量定义
  • Annotations 类标注定义

1. 获取Class名称

取得Class的全名

Class aClass = ... //obtain Class object. See prev. sectionString className = aClass.getName();

如果不需要package ,只要Class名称,可以使用getSimpleName

Class  aClass          = ... //obtain Class object. See prev. section
String simpleClassName = aClass.getSimpleName();

2. 获取类修饰符

类可以使用public ,private ,static 加以修饰,getModifiers()可以用来获取类修饰符定义。

Class  aClass = ... //obtain Class object. See prev. section
int modifiers = aClass.getModifiers();

根据getModifiers() 的返回值,可以使用Modifier.ixXXX 来判断修饰符类型:


Modifier.isAbstract(int modifiers)
Modifier.isFinal(int modifiers)
Modifier.isInterface(int modifiers)
Modifier.isNative(int modifiers)
Modifier.isPrivate(int modifiers)
Modifier.isProtected(int modifiers)
Modifier.isPublic(int modifiers)
Modifier.isStatic(int modifiers)
Modifier.isStrict(int modifiers)
Modifier.isSynchronized(int modifiers)
Modifier.isTransient(int modifiers)
Modifier.isVolatile(int modifiers)


 3. 获取类所在包的信息

 

Class  aClass = ... //obtain Class object. See prev. section
Package package = aClass.getPackage();


通过Package 可以得到包的名称等信息。

4. 获取父类定义

Class superclass = aClass.getSuperclass();

superclass 也是Class类型,使用可以再使用Class的方法来访问父类的定义。

5. 获取类实现的接口定义

Class  aClass = ... //obtain Class object. See prev. section
Class[] interfaces = aClass.getInterfaces();


 

类可以实现多个接口,要注意的是,这个方法只返回该类直接定义的接口类型,不返回父类实现的接口类型。

6. 获取构造函数


 

Constructor[] constructors = aClass.getConstructors();

7. 获取类的方法定义


 

Method[] method = aClass.getMethods();


 8. 获取类的成员定义

 

 

Method[] method = aClass.getFields();

9. 获取类的标注信息


 

Annotation[] annotations = aClass.getAnnotations();


 


 


 


 

 

告别谷歌!QGC地面站v4.0.x保姆级教程:用高德/天地图瓦片替换老旧地图源 本文提供QGroundControl(QGC)地面站v4.0.x的详细教程,指导用户如何用高德地图和天地图瓦片替换默认地图源,解决数据陈旧、访问不稳定等问题。教程涵盖环境配置、源码修改、地图集成及性能优化,帮助无人机开发者打造稳定高效的中文地图解决方案。 阅读详情

相关推荐

CKAD-CN 考试知识点分享(12) Secret - 1

步骤操作完成1提取 Deployment 中的硬编码 Secret 值✅2创建名为postgres的 Secret✅3修改 Deployment 使用引用 Secret✅4验证新 Pod 正常运行✅❌未删除原 Deployment✅(遵守要求)✅任务完成。敏感信息已从环境变量移出,安全地存储在 Kubernetes Secret 中。

轻的博客 628

JavaSE学习笔记(3)

IO流: 作用: 复制各种类型文本(字节流 & 字符流) 读进来(input)、写出去(output) 流程: 源文件--读进来(FileInputStream输入流类)--中转--写出去(FileOutputStream输出流类)--目标 以Stream结尾的一般都是字节流。顶级类:InputStream、OutputStream 按字节传递 Reader/Writer结尾的一般是字符流。顶级类:Reade...

m0_57159494的博客 310

CPU系统级验证——测试激励——imperas公司riscvOVPsimPlus文件分析

本分析重点关注该repo向量扩展部分。 1. repo简介 该repo是指令集验证的仿真环境包括,大部分是指令集的测试用例,也包含了一些模拟器,如riscvOVPsimPlus。 主要介绍的是riscvOVPsimPlus指令集模拟器,riscvOVPsimPlus(下面统称ISS)是imperas公司在riscvOVPsim基础上扩充了向量扩展的指令集模拟器,该repo于今年9月份部分开源 什么叫部分开源呢? 首先该repo必须在imperas官网注册下载,而且必须是企业用户(免费邮箱人家瞧不上.

知识,既贵,又便宜。 4459

21、反射

1、反射相关的主要API java.lang.Class:代表一个类 java.lang.reflect.Method:代表类的方法 java.lang.reflect.Field:代表类的成员变量 java.lang.reflect.Constructor:代表类的构造器 … … 2、Class类的常用方法 方法名 ...

wiscourper的博客 916

RV1126开发板性能实测:网络、温度与功耗全解析

本文对RV1126开发板进行了全面的性能实测,重点分析了网络性能、温度表现与功耗特性。测试发现UDP带宽可达500Mbps,但TCP性能受限于协议栈;散热设计对持续性能至关重要,大板子在AI推理和视频推流中表现更稳定。为嵌入式开发者提供了真实的选型参考和优化建议。

d3e4f的博客 262

zynq+LWIP 裸机双网口实现(MIO+EMIO)+程序下载

芯片型号: ZYNQ: XC7Z010clg400开发软件:Vivado2022 + Xilinx Vitis 2022网卡芯片:RTL8211FDI(需要根据网口芯片型号修改对应的硬件配置代码。

thinking in 小宇宙 3404

【java学习—十四】反射获取类的父类、接口、构造方法、方法(3)

其中父类为Person类,子类为Student类,两种接口分别为Move和Study两种,用来描述上学方式和学习范围。③取得参数的类型: public Class

weixin_44883789的博客 1543

ENVI水体提取流程实践与问题

ENVI水体提取流程实践与问题 卫片解译中,水体属于比较好判别的一类。有水体指数、阈值法、监督分类等一系列方法进行提取,今天介绍利用水体指数和ENVI提取水体的过程。 1.所用数据 Landsat8卫片1景、ENVI5.3。 2.辐射定标与水陆分离 由于要对卫片进行水体指数的计算,因此需要对数据进行辐射定标以及大气校正的预处理。 辐射定标就是将图像的数字量化值(DN)转化为辐射亮度值或者反射率或者表面温度等物理量的处理过程。在工具栏中搜索Radiometric Correction,点开进行辐射定标。

Soul_taker的博客 4万+

代理对象上的注解获取失败总结

1、从上文的分析来看,如果是CGLIB代理的原理,通过增加@Inherited可以保证注解信息不丢失。2、而JDK代理,只有在接口上的注解才不会丢失最后框架提供的根据注解获取对象,作为框架其并不知道使用了何种代理。

sunquan291的专栏 1161

Vivado图形化界面烧写MCS文件到SPI FLASH全流程(附常见报错解决方案)

本文详细介绍了使用Vivado图形化界面将MCS文件烧录至SPI FLASH的完整操作流程。内容涵盖从环境准备、MCS文件生成到硬件连接与烧写的每一步,并针对SPI总线宽度报错、FLASH型号识别失败等常见问题提供了深度解决方案,帮助用户高效完成FPGA配置,摆脱对TCL命令行的依赖。

s8t9u0v1w的博客 535

YOLOv11 改进 - 注意力机制 | EMA (Efficient Multi-Scale Attention) 高效多尺度注意力:跨空间学习与多分支协同增强特征表征,优化多尺度目标检测

本文介绍了高效多尺度注意力(EMA)模块及其在YOLOv11中的结合应用。现有注意力机制在通道维度缩减时可能影响深度视觉表示,EMA模块通过结合通道和空间信息、采用多尺度并行子网络结构等创新点,实现了高效的多尺度注意力机制。其基本原理包括通道和空间注意力结合、多尺度并行子网络设计等。在多个流行基准数据集上的实验表明,该模块能有效提高特征表示能力。我们将EMA集成进YOLOv11,实验证明改进后的模型在目标检测任务中性能优越,具有广泛应用前景

魔改工程师的博客 1292

getClass()

[size=medium] [color=blue]Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射机制,但是如果编程语言本身支持反射,那么反射的实现就会方便很多。 ...

H@ppy 464

深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能

大家好,我是微学AI,今天给大家介绍一下深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能。在去年ChatGPT的发布后,各种国内外的大语言模型层出不穷涌现,但是大家都知道现在的模型的诟病的数学能力不足,就算是简单的数学题都可能算错,今天我就来给大家引入MathGPT的模型,用来解决GPT解决数学问题,对于简单的初中数学高中数学都可以解决,让数学问题精准答题得到实现。

微学AI的博客 1649

Java - Guide to Java Reflection

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 1. Overview In this article we will be exploring java reflection, which allows us to inspect or/and modify runtime attribute...

了解➔熟悉➔掌握➔精通 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java Reflection(二):Classes

使用Java反射机制可以在运行时期检查Java类的信息,检查Java类的信息往往是你在使用Java反射机制的时候所做的第一件事情,通过获取类的信息你可以获取以下相关的内容: Class对象 类名 修饰符 包信息 父类 实现的接口 构造器 方法 变量 注解 除了上述这些内容,还有很多的信息你可以通过反射机制获得,如果你想要知道全部的信息你可以查看相应的文档JavaDoc for java.lang.Class里面有详尽的描述。 在本节中我们会简短的涉及上述所提及的信息,上述的一些主题我们会使用单独的章节

feel369的博客 115

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java Reflection-Classes

通过使用Java反射,我们可以在程序运行时来观察Java classes。通常我们使用Java反射最先会观察classes,通过classes我们可以获取到的信息有: .Class Name .Class Modifies (public, private, synchronized etc.) .Package Info .Superclass .Implemented Interfa

1044

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java Reflection操作Classes的简介说明

Java Reflection操作Classes的简介说明

qq_25073223的博客 102

Java Reflection(一)Classes、Constructor、变量、方法

1.Classes 使用Java反射机制可以在运行时期检查Java类的信息,检查Java类的信息往往是你在使用Java反射机制的时候所做的第一件事情,通过获取类的信息你可以获取以下相关的内容: 1.1Class对象 在你想检查一个类的信息之前,你首先需要获取类的Class对象。Java中的所有类型包括基本类型(int, long, float等等),即使是数组都有与之关联的Class类的对象。如果你在编译期知道一个类的名字的话,那么你可以使用如下的方式获取一个类的Class对象。 Class my

chenbin1991smile的博客 246

Java Reflection - Classes

http://tutorials.jenkov.com/java-reflection/classes.html The Class ObjectClass NameModifiersPackage InfoSuperclassImplemented InterfacesConstructorsMethodsFieldsAnnotations Usi

dtnqy的专栏 422

Java Reflection-classes

Java Reflection http://tutorials.jenkov.com/java-reflection/classes.html Why and where Reflectioin? Reflection allows a program to work with code that may not be present and do so in a re

mamalolo的专栏 502

Outlook Exchange登录失败:身份信任链断裂的深度排查与修复

Outlook Exchange登录失败并非传统软件故障,而是OAuth身份验证流程中令牌交换(token exchange)中断所引发的信任链断裂问题。其本质是客户端与Azure AD服务之间在获取访问令牌时遭遇拒绝,常见于凭据管理器污染、MFA策略变更或加载项干扰等场景。该问题直接影响企业用户邮件协同效率,广泛出现在Office 365、Microsoft 365及混合Exchange环境中。技术价值在于厘清本地Windows凭据、导航窗格配置与云端身份策略的耦合关系,支撑安全合规的终端接入治理。典型应

weixin_34364071的博客 331
上一篇: Android ApiDemos示例解析(8):App->Activity->Hello world
下一篇: 引路蜂地图API:概述
引路蜂
博客等级 码龄16年 3122粉丝 711原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值