zoukankan      html  css  js  c++  java
  • java打印出继承体系的类(包括抽象类)、接口、域字段

    搜索了很多文章都说需要newInstance进行实例化,但抽象的类进行实例化肯定是有问题的
    所以这里的实现相对更好。如有问题欢迎大家留言指正

    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
    

    其中用到的工具类

    public class P {
    
        public static void print(Object s) {
            System.out.print(s);
        }
    
        public static void println(Object s) {
            System.out.println(s);
        }
    }
    
  • 相关阅读:
    POJ 2528 Mayor's posters 线段树+离散化
    Leveldb之version与version_set详细对比
    rocksdb编译测试的正确姿势
    ycsb使用方法
    memalign vs malloc
    四种监听器(自身类,外部类,内部类,匿名类)
    数据库基础
    哈希索引和Btree索引
    哈希表hashtable
    抽象类和接口
  • 原文地址:https://www.cnblogs.com/so-easy/p/11521637.html
Copyright © 2011-2022 走看看