`
zwhc
  • 浏览: 264895 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

父类信息查看器

阅读更多
package test;

/**
 * 父类信息查看器
 * 在查看别人的源码时,有时候很想有个可以列出某个类的父类信息的工具。
 * 没找到,于是做了一个。
 * 对于目前情况来说, showSuperclass(Class clz) 已经够用了。
 * 更深入的,目前做了一点研究,有空再完善吧。
 */

import java.lang.reflect.Type;

import org.apache.log4j.Logger;


public class ShowSuper {
	private static Logger log = Logger.getLogger(ShowSuper.class);
	
	/**
	 * 递归获取一个类的所有父类
	 * @param clz
	 */
	public static void showSuperclass(Class clz)
	{
		while(clz!=null)
		{
			System.out.println( "16 (" + clz.getName() + ".java:1)");
			clz = clz.getSuperclass();
		}
	}
	
	/**
	 * getGenericSuperclass 和 getSuperclass 好象没有什么区别,除了类型
	 * @param clz
	 */
	
	public static void showGenericSuperclass(Class clz)
	{
		while(clz!=null)
		{
			System.out.println( "16 (" + clz.getName() + ".java:1)");
			clz = (Class)clz.getGenericSuperclass();
		}
	}
	
	
	public static void showInterfaces(Class clz)
	{
		System.out.println( "(" + clz.getName() + ".java:1)");
		if(clz!=null)
		{
			Class[] clzs = clz.getInterfaces();
			System.out.println( "clzs.length:" + clzs.length);
			for(int i=0; i<clzs.length; i++)
			{
				System.out.println( "30 (" + clzs[i].getName() + ".java:1)");
				//showSuperclass(clzs[i]);
			}
		}
	}

	/**
	 * getGenericInterfaces 其实应该改名为 getSuperInterfaces 吧
	 * 嗯,一个接口可以继承多个接口
	 * @param clz
	 */
	public static void showGenericInterfaces(Class clz)
	{
		System.out.println( "(" + clz.getName() + ".java:1)");
		if(clz!=null)
		{
			Type[] clzs = clz.getGenericInterfaces();
			System.out.println( "clzs.length:" + clzs.length);
			for(int i=0; i<clzs.length; i++)
			{
				System.out.println( "57 (" + ((Class)clzs[i]).getName() + ".java:1)");
				//showSuperclass(clzs[i]);
			}
		}
	}
	
	
	public static void main(String[] args)
	{
		//Class clz = log.getClass(); 
		//log.debug( clz );
//		Class clz = null;
//		for(int i=0; i<10; i++)
//		{
//			if(clz==null)
//			{
//				clz = log.getClass();
//			}
//			else
//			{
//				clz = clz.getSuperclass();
//			}
//			if(clz==null)
//			{
//				break;
//			}
//			log.debug( "(" + clz.getName() + ".java:1)");
//			
//		}
		
		//showSuperclass(log.getClass());
		//showSuperclass(Class.class);
		
		//showInterfaces(Class.class);
		//showInterfaces(Imp01.class);
		//showInterfaces(Logger.class);
		//showSuperclass(Imp01.class);
		//showGenericSuperclass(Imp01.class);
		//showGenericInterfaces(Imp01.class);
		//showGenericInterfaces(Interface02.class);
		//showGenericInterfaces(Interface01.class);
		showGenericInterfaces(Interface11.class);
		//showSuperclass(Interface02.class);
		//showGenericSuperclass(Interface02.class);
		
	}
}

分享到:
评论

相关推荐

    java class文件查看器

    使用Java Class文件查看器,用户可以查看以下几个关键方面的信息: 1. **类结构**:包括类名、父类、接口实现等,这对于理解类的继承关系至关重要。 2. **字段信息**:查看类中的变量,包括其类型、访问权限和初始...

    class文件查看器.rar

    《深入解析Java Class文件查看器》 在Java编程领域,理解class文件的内部结构对于开发者来说至关重要,因为它是Java程序运行的基础。今天我们将探讨一款名为"class文件查看器"的工具,它是一个跨平台的实用程序,专...

    jclazz win JAVA 字节码查看器

    《jclazz:Windows平台上的JAVA字节码查看器详解》 在Java开发过程中,了解和分析字节码是提升程序理解和优化能力的重要手段。jclazz是一款专为Windows平台设计的JAVA字节码查看器,其1.1.2版本以其易用性和功能...

    Java制作浏览器和源代码查看器.rar

    Java制作的网页浏览器和源代码查看器,仿IE的网页浏览功能,不支持HTML5,窗口采用上下分屏显示的方式,上面显示网页浏览器,下面显示该网页的源代码,JTextField jtfAddress; //输入html文件地址或网址  ...

    JAVA的类加载器的工作原理.docx

    Bootstrap类加载器会先看看rt.jar中有没有这个类,因为并没有这个类,所以这个请求由回到Extension类加载器,它会查看jre/lib/ext目录下有没有这个类,如果这个类被Extension类加载器找到,那么它将被加载,而...

    Class文件查看

    为了理解并分析这些Class文件,开发者通常会使用特定的工具,如Class查看器和反编译器。 "Class文件查看"是一个关键的IT知识点,它涉及到对已编译Java类的深入理解和调试。这类工具允许开发者查看类的方法、字段、...

    java中带super关键字的程序内存分析

    因为子类对象已经包含了父类的所有信息,直接调用即可。 6. **多态性**:在Java中,父类引用可以指向子类对象,这种现象称为多态性。在这种情况下,通过父类引用调用的方法实际上是子类重写后的版本,除非使用`...

    面向对象课程设计:学生信息管理系统

    在运行时,可能需要连接到`.mdf`数据库文件,以查看和操作其中的学生信息。 在学习这个项目的过程中,学生可以掌握以下知识点: 1. 面向对象编程的基本概念,如类、对象、封装、继承、多态等。 2. Java语言的语法和...

    WAS+V7+理解类装入器-红皮书.pdf

    为了更好地理解和调试类装载器的行为,WAS V7提供了类装载器查看器工具。该工具可以帮助开发者查看每个类是如何被装载的、装载它的类装载器是谁等信息,这对于诊断类装载相关的错误非常有用。 #### 通过实例学习类...

    教学楼管理信息系统

    Struts 2提供了丰富的特性,如拦截器、动态方法调用等,使得开发者能更便捷地构建可维护、可扩展的Web应用。同时,系统使用JDBC(Java Database Connectivity)作为数据库访问层,用于与后台数据库进行交互,处理...

    java员工管理信息系统

    例如,只有管理员才能进行员工信息的修改和删除,普通用户只能查看信息。 8. 错误处理:系统应具备良好的错误处理机制,当出现异常时,能够友好地向用户反馈错误信息,而不是直接抛出异常。 总的来说,这个基于...

    webshpere classloader 原理

    - 当搜索类时,类加载器可以先搜索父类加载器再查看自身,或者先查看自身再搜索父类加载器。 - 委托算法不适用于本地库(如.dll或.so文件)。 - 常见的委托值包括: - PARENT_FIRST:先将搜索委托给父类加载器,...

    开始→运行(cmd)命令大全

    **应用场景**:查看计算机的基本配置和状态信息。 #### 35. perfmon.msc - 性能监视器 **功能**:启动性能监视器,可以监控系统性能。 **应用场景**:分析系统性能瓶颈,进行性能调优。 #### 36. winver - 查看...

    websphere6,7上修改类装载顺序为应用程序优先

    - 修改为“子类优先”(parent last),这意味着应用类加载器会首先尝试加载类,如果找不到再由父类加载器加载。 3. **设置模块间类加载**: - 对于多模块应用,可能还需要调整模块间的类加载策略。在控制台中...

    WebSphere Application Server V7 理解类装入器 中文翻译版

    - **类装入器查看器**:一种工具,用于可视化展示WebSphere中类装入器的层次结构及其关系,有助于诊断类加载问题。 #### 通过实例学习类装入器 文档中提到了四个步骤,通过这些步骤可以帮助理解类装入器在实际部署...

    深入JVM内核—原理、诊断与优化视频教程-6. 类装载器

    7. **类装载器的诊断**:通过JVM的命令行工具如`jinfo`、`jconsole`或`jmap`,可以查看各个类装载器的详细信息,包括装载的类数量、内存占用等。对于类装载问题的排查,`jstack` 可以输出线程堆栈信息,帮助定位问题...

    查看.class源码

    `.class`文件遵循Java虚拟机(JVM)规范,它由一系列字节组成,包括魔数、版本信息、常量池、类和父类信息、接口、字段、方法等。这些数据项以特定的格式编码,对于普通开发者来说直接阅读是困难的。 2. **查看...

    java class loader(JAVA类加载器)

    遇到类冲突、类找不到等问题时,可通过设置JVM参数`-verbose:class`来查看类加载的详细信息,或者使用JDK的`jmap -histo`命令分析内存中的类加载情况。 8. **线程安全** 类加载过程中的某些步骤,如加载和初始化...

    Super关键字的几点应用

    当子类继承父类时,可以通过`super()`来调用父类的无参数构造器,或者通过`super(args...)`调用带参数的构造器。这样做确保了在子类实例化过程中,父类的初始化工作得以执行。例如: ```java public class Parent {...

Global site tag (gtag.js) - Google Analytics