Java查看内部类信息
Java中支持在类的内部定义类,这种类成为内部类。内部类有些像Java中的方法,可以使用访问权限限定符修饰,可以使用static修饰等。编写程序,利用Java的反射机制来查看内部类的信息。
思路分析:
- 要查看某个内部类的信息,不能直接用getCanonicalName()等方法,必须先找到该内部类的外部类,即直接继承类的标准名称,使用Class类的forName()方法创建一个对象;
- 利用Class类的getDeclaredClasses()方法获得代表内部类的Class对象组成的数组;
- 使用foreach遍历Class对象数组,使用Class类的getCanonicalName()方法获取每个内部类的标准名称,使用getModifiers()方法获取每个内部类的修饰符,使用getGenericInterfaces()方法获取每个内部类所实现的接口,使用getGenericSuperclass()方法获取每个内部类的直接继承类,即父类。
代码如下:
import java.lang.reflect.Modifier;
import java.lang.reflect.Type; public class NestedClassInformation {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> cls = Class.forName("java.awt.geom.Point2D");
Class<?>[] classes = cls.getDeclaredClasses();// 获得代表内部类的Class对象组成的数组
for (Class<?> clazz : classes) {// 遍历Class对象数组
System.out.println("类的标准名称:" + clazz.getCanonicalName());
System.out.println("类的修饰符:" + Modifier.toString(clazz.getModifiers()));
Type[] interfaces = clazz.getGenericInterfaces();// 获得所有泛型接口
System.out.println("类所实现的接口:");
if (interfaces.length != 0) {// 如果泛型接口个数不是0则输出
for (Type type : interfaces) {
System.out.println("\t" + type);
}
} else {
System.out.println("\t" + "空");
}
Type superClass = clazz.getGenericSuperclass();// 获得直接父类
System.out.print("类的直接继承类:");
if (superClass != null) {// 如果直接父类不是Object就输出
System.out.println(superClass);
} else {
System.out.println("空");
}
}
}
}
效果如图:

Java查看内部类信息的更多相关文章
- java 查看线程的信息
的代码上加上 断点 运行 进入Terminal jps 查看进程号 jstack 进程号 查看线程的信息 jstack pid 此时进去DEBUG 端F9 跑完程序 再回到Terminal 中 就能 ...
- Docker 查看镜像信息
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 文章首发个人网站: https://ww ...
- kill -3 PID命令获取java应用堆栈信息
一.应用场景: 当linux服务器出现异常情况(响应缓慢,负载持续飙升)并且服务器没有安装对应的包而无法使用jstack等命令时,可以使用linux的kill相关命令打印堆栈信息. 命令格式:kill ...
- 【Java】 内部类
[Java]内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 使用内部类的的原因主要有三点: 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据. 内部类可以对同一个包中的 ...
- 使用FileSystem类进行文件读写及查看文件信息
使用FileSystem类进行文件读写及查看文件信息 在这一节我们要深入了解Hadoop的FileSystem类——这是与与hadoop的文件系统交互的重要接口.虽然我们只是着重于HDFS的实现, ...
- Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程
2.Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程 2014-12-07 23:39 2623人阅读 评论(0) ...
- 学以致用,通过字节码理解:Java的内部类与外部类之私有域访问
目录: 内部类的定义及用处 打开字节码理解内部类 一.内部类的定义及用处 内部类(inner class)是定义在另一个类中的类.使用内部类,我们可以: 访问该类定义所在的作用域中的数据,包括私有的数 ...
- java对象头信息和三种锁的性能对比
java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 |-------------------------------- ...
- 利用Xposed Hook打印Java函数调用堆栈信息的几种方法
本文博客链接:http://blog.csdn.net/QQ1084283172/article/details/79378374 在进行Android逆向分析的时候,经常需要进行动态调试栈回溯,查看 ...
随机推荐
- scrapy爬虫出现Forbidden by robots.txt
scrapy爬虫出现Forbidden by robots.txt
- 重装MAC系统 “安装器有效负载签名检查失败” 解决方法
部分朋友反应安装macOS Sierra的时候会提示:"安装器有效负载签名检查失败" 其实这是系统时间不对的原因,把系统时间修改正确就好了. 1,如果电脑正常运行,那么进系统偏好设 ...
- css3常用动画样式文件move.css
move.css zoomIn zoomInDownouter-circlearrowTop expandOpen fadeIn fadeInNormal fadeInUp fadeInRi ...
- 关于 C# 十进制不足补位的应用
看下面图的应用(我们平常的一些自定义主键增加): 补位应用知识: D十进制 不足几位前面补0 基于这个我们可以得到上面结果 //最大編號 string maxNo = string.Empty; // ...
- SSH-CLIENT : gSTM
Linux环境下可以使用终端命令行直接登录SSH帐号.但是对Linux新手,可能不太习惯用命令行,于是我就琢磨找一款Linux环境下可以图形化管理ssh帐号的客户端软件,还真让我找着了. gSTM,是 ...
- IDEA MAVEN Failed to create a Maven project 'C:/gitProjects/mayProj/pom.xml' already exists in VFS
When adding the module to an existing module that already has a POM, it is necessary to manually spe ...
- Linux之计划任务
计划任务特性 1. 需要在指定的某时间段运行 2. 需要将任务结果邮件通知用户 3. 单次任务及循环任务区别 Linux计划任务的实现工具 1. at工具 其只能执行一次性任务 其会自动加载部分环境变 ...
- 【转】【Python】python使用urlopen/urlretrieve下载文件时出现403 forbidden的解决方法
第一:urlopen出现403 #!/usr/bin/env python # -*- coding: utf- -*- import urllib url = "http://www.go ...
- (笔记)Linux内核中内存相关的操作函数
linux内核中内存相关的操作函数 1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) ...
- C语言中的控制语句: 判断、环循等;
列举这一部分的目的就是注意它的写法,尤其是 分号 : 的位置: 1. if-else if else 语句: if (表达式1) 语句1: else if (表达式2) 语句2: else 语句3: ...