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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值