博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查看内部类信息
阅读量:7211 次
发布时间:2019-06-29

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

      Java中支持在类的内部定义类,这种类称为内部类。内部类有些像Java中的方法,可以使用访问权限限定符修饰,可以使用static修饰等。本实例将利用Java的反射机制来查看内部类的信息,实例运行效果如图

 

     Class类的getDeclaredClasses()方法返回Class对象的一个数组,这些对象反映声明为该Class对象所表示的类的成员的所有类和接口,包括该类所声明的公共、保护、默认(包)访问及私有类和接口,但不包括继承的类和接口。如果该类不将任何类或接口声明为成员,或者该Class对象表示基本类型、数组类或void,则该方法返回一个长度为0的数组。该方法的声明如下:

 

public Class
[] getDeclaredClasses() throws SecurityException

 

   注意:对于私有的域或方法,如果有安全管理器,则可能会出现异常。

      编写类NestedClassInformation,在该类的main()方法中输出了内部类的信息。代码如下:

 

package com.mingrisoft.reflection;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("空"); } } }}

 

   心法领悟:反射与内部类。

   利用Class类的getDeclaredClasses()方法可以获得一个数组,其中的每个成员代表一个内部类的类对象。这样就可以像普通类那样获得内部类的信息,使用起来非常方便。本实例以java.awt.geom.Point2D为例进行演示,读者可以根据需求修改。对于想要输出的信息,也可以适当地添加和修改。

 

转载于:https://www.cnblogs.com/mrxy/p/6491002.html

你可能感兴趣的文章
Leetcode: Counting Bits
查看>>
解决“HTTP/1.1 405 Method not allowed”问题
查看>>
mac/unix系统:C++实现一个端口扫描器
查看>>
Pocket Gem OA: Path Finder
查看>>
【小白的CFD之旅】22 好网格与坏网格
查看>>
MySQL--指定浮点型数据的精确度TRUNCATE
查看>>
[Mac入门]如何在Mac下显示Finder中的所有文件
查看>>
电梯停靠问题---------------给你出道题
查看>>
【WPF】动态设置Binding的ConverterParameter转换器参数
查看>>
Nginx配置教程
查看>>
linux中查看和开放端口
查看>>
poj3181 Dollar Dayz
查看>>
求助下 Ubuntu 15.10(64 位)下安装 pyspider 下的问题 - V2EX
查看>>
SQL Server外连接、内连接、交叉连接
查看>>
Ajax-jQuery_Ajax_实例 ($.ajax、$.post、$.get)
查看>>
Python实现web动态服务器
查看>>
新客户上云 –虚拟机及相关服务常见问题集锦
查看>>
IntelliJ Idea 常用快捷键列表
查看>>
各数据库连接配置与maven依赖安装
查看>>
Linux(centOS)手动安装删除Apache+MySQL+PHP+Memcached原创无错版
查看>>