RTTI:获取类的详细信息(二)

2014-11-24 07:56:18 · 作者: · 浏览: 1
lasses != null) {
sb.append("declared inner classes:\n");
for (Class< > c : declaredInnerClasses) {
sb.append("\t" + removeQualifiers(c.toString()) + "\n");
}
}
Class< >[] innerClasses = clazz.getDeclaredClasses();
if (innerClasses != null) {
sb.append("inner classes:\n");
for (Class< > c : innerClasses) {
sb.append("\t" + removeQualifiers(c.toString()) + "\n");
}
}
// Super/Base classes
Class< > supers = clazz.getSuperclass();
if (supers != null) {
sb.append("super classes:\n");
sb.append("\t" + removeQualifiers(supers.toString()) + "\n");
}
// Interfaces
Class< >[] interfaces = clazz.getInterfaces();
if (interfaces != null) {
sb.append("interfaces:\n");
for (Class< > i : interfaces) {
sb.append("\t" + removeQualifiers(i.toString()) + "\n");
}
}
sb.append("}");
System.out.println(sb.toString());
}
/**
* @param args
*/
public static void main(String[] args) {
try {
dumpClassInfo("java.lang.String");
dumpClassInfo("com.effectivejava.rtti.ClassExtractor");
dumpClassInfo("com.effectivejava.rtti.ClassExtractorTest");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
这里有另外一个供测试的类:

[java]
public class ClassExtractorTest extends ClassExtractor implements Runnable,
Serializable, Cloneable {
/**
*
*/
private static final long serialVersionUID = -5054007892592227440L;

private String name;
private static long uid;

public ClassExtractorTest() {
// TODO Auto-generated constructor stub
}

public void run() {
// TODO Auto-generated method stub

}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

public void goToSomewhere() {

}

public static void die() {

}

private void cannotSeeThis() {

}
enum Direction {
North,
West,
};
private class InnerClass {

}

private static class StaticInnerClass {

}
}
运行结果:

[plain]
class com.effectivejava.rtti.ClassExtractorTest {
declared fields:
private static final long serialVersionUID
private String name
private static long uid
feids:
declared methods:
public static void main(String[])
public void run()
public void goToSomewhere()
public static void die()
private void cannotSeeThis()
methods:
public static void main(String[])
public void run()
public void goToSomewhere()
public static void die()
public void inheritedMethod()
public static void dumpClassInfo(String) throws ClassNotFoundException
public final native void wait(long) throws InterruptedException
public final void wait(long,int) throws InterruptedException
public final void wait() throws InterruptedException
public boolean equals(Object)
public String toString()
public native int hashCode()
public final native Class getClass()
publi