java多态和下转型关系_Java多态性和向下转型

我正在使用

Java的反射API,我正在编写检查给定对象并描述其字段,方法等的方法.

我使用getFields()方法迭代不同的属性并显示对象内容:

public static void display(Integer i)

{

System.out.println("An integer: " + i);

}

// Basically a method for each primitive type wrapper

public static void display(Object o)

{

for (Field f : c.getFields())

{

System.out.println("A " + o.getClass() + " which is composed of:");

display(f.get(o));

}

}

(为简单起见,省略了其他原始类型和数组.)

尽管Field的get方法返回一个Object,我认为会为原始类型包装器(整数,字符串等)调用正确的方法,但实际上,只调用display(Object o)(不执行隐式向下转换).

就目前而言,我发现的唯一解决方案是如果可能的话,粗暴地对这些对象进行低估:

public static void display(Object o)

{

if (o instanceof Integer)

{

display((Integer) o);

return;

}

else if (o instanceof String

{

...

} // And so on

for (Field f : c.getFields())

{

System.out.println("A " + o.getClass() + " which is composed of:");

display(f.get(o));

}

}

然而,这似乎很难看,我想知道是否有更优雅的方法来确保调用正确的方法.

有任何想法吗?

在此先感谢StackOverflow的优秀人才!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值