Java中支持在类的内部定义类,这种类成为内部类。内部类有些像Java中的方法,可以使用访问权限限定符修饰,可以使用static修饰等。编写程序,利用Java的反射机制来查看内部类的信息。

思路分析:

  1. 要查看某个内部类的信息,不能直接用getCanonicalName()等方法,必须先找到该内部类的外部类,即直接继承类的标准名称,使用Class类的forName()方法创建一个对象;
  2. 利用Class类的getDeclaredClasses()方法获得代表内部类的Class对象组成的数组;
  3. 使用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查看内部类信息的更多相关文章

  1. java 查看线程的信息

    的代码上加上 断点 运行 进入Terminal jps 查看进程号 jstack 进程号  查看线程的信息 jstack pid 此时进去DEBUG 端F9 跑完程序 再回到Terminal 中 就能 ...

  2. Docker 查看镜像信息

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 文章首发个人网站: https://ww ...

  3. kill -3 PID命令获取java应用堆栈信息

    一.应用场景: 当linux服务器出现异常情况(响应缓慢,负载持续飙升)并且服务器没有安装对应的包而无法使用jstack等命令时,可以使用linux的kill相关命令打印堆栈信息. 命令格式:kill ...

  4. 【Java】 内部类

    [Java]内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 使用内部类的的原因主要有三点: 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据. 内部类可以对同一个包中的 ...

  5. 使用FileSystem类进行文件读写及查看文件信息

    使用FileSystem类进行文件读写及查看文件信息   在这一节我们要深入了解Hadoop的FileSystem类——这是与与hadoop的文件系统交互的重要接口.虽然我们只是着重于HDFS的实现, ...

  6. Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程

    2.Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程 2014-12-07 23:39 2623人阅读 评论(0) ...

  7. 学以致用,通过字节码理解:Java的内部类与外部类之私有域访问

    目录: 内部类的定义及用处 打开字节码理解内部类 一.内部类的定义及用处 内部类(inner class)是定义在另一个类中的类.使用内部类,我们可以: 访问该类定义所在的作用域中的数据,包括私有的数 ...

  8. java对象头信息和三种锁的性能对比

    java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 |-------------------------------- ...

  9. 利用Xposed Hook打印Java函数调用堆栈信息的几种方法

    本文博客链接:http://blog.csdn.net/QQ1084283172/article/details/79378374 在进行Android逆向分析的时候,经常需要进行动态调试栈回溯,查看 ...

随机推荐

  1. scrapy爬虫出现Forbidden by robots.txt

    scrapy爬虫出现Forbidden by robots.txt

  2. 重装MAC系统 “安装器有效负载签名检查失败” 解决方法

    部分朋友反应安装macOS Sierra的时候会提示:"安装器有效负载签名检查失败" 其实这是系统时间不对的原因,把系统时间修改正确就好了. 1,如果电脑正常运行,那么进系统偏好设 ...

  3. css3常用动画样式文件move.css

    move.css zoomIn  zoomInDownouter-circlearrowTop expandOpen fadeIn  fadeInNormal  fadeInUp   fadeInRi ...

  4. 关于 C# 十进制不足补位的应用

    看下面图的应用(我们平常的一些自定义主键增加): 补位应用知识: D十进制 不足几位前面补0 基于这个我们可以得到上面结果 //最大編號 string maxNo = string.Empty; // ...

  5. SSH-CLIENT : gSTM

    Linux环境下可以使用终端命令行直接登录SSH帐号.但是对Linux新手,可能不太习惯用命令行,于是我就琢磨找一款Linux环境下可以图形化管理ssh帐号的客户端软件,还真让我找着了. gSTM,是 ...

  6. 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 ...

  7. Linux之计划任务

    计划任务特性 1. 需要在指定的某时间段运行 2. 需要将任务结果邮件通知用户 3. 单次任务及循环任务区别 Linux计划任务的实现工具 1. at工具 其只能执行一次性任务 其会自动加载部分环境变 ...

  8. 【转】【Python】python使用urlopen/urlretrieve下载文件时出现403 forbidden的解决方法

    第一:urlopen出现403 #!/usr/bin/env python # -*- coding: utf- -*- import urllib url = "http://www.go ...

  9. (笔记)Linux内核中内存相关的操作函数

    linux内核中内存相关的操作函数 1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) ...

  10. C语言中的控制语句: 判断、环循等;

    列举这一部分的目的就是注意它的写法,尤其是 分号 : 的位置: 1. if-else if else 语句: if (表达式1) 语句1: else if (表达式2) 语句2: else 语句3: ...