搜索了不少文章都說須要newInstance進行實例化,但抽象的類進行實例化確定是有問題的
因此這裏的實現相對更好。若有問題歡迎你們留言指正java
import java.lang.reflect.Field; public class Shapes { static void printClassTree(Class<?> o) { //基類Object if (o == Object.class) { P.println("Object"); return; } printClassTree(o.getSuperclass()); //繼承的類 P.print(o.getSimpleName()); //實現的接口 if (o.getInterfaces().length > 0) P.print("實現的接口: "); for (Class face : o.getInterfaces()) { P.print(face.getSimpleName() + " "); } //域 if (o.getDeclaredFields().length > 0) P.print("定義的域:"); for (Field field : o.getDeclaredFields()) { P.print(field.getName() + " "); } P.println(); } public static void main(String[] args) { printClassTree(Rhomboid.class); } } interface Color { void paint(); } abstract class Shape implements Color { static String signClass; void draw() { P.println(this + ".draw()"); } void rotate() { if (this instanceof Circle) { return; } P.println(this.getClass()); } public void paint() {} abstract public String toString(); } class Rhomboid extends Shape { public String toString() { return "Rhomboi"; } }
//結果 Object Shape實現的接口: Color 定義的域:signClass Rhomboid