親情報ビューア



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);
		
	}
}