我可以使用方法在Java中进行类转换吗?

时间:2014-08-04 17:05:44

标签: java casting

所以我出于某种原因不喜欢这个:

((Foo) list.get(0)).getBar();

是否可以做这样的事情:

list.get(0).castTo(Foo.class).getBar();

感谢。

2 个答案:

答案 0 :(得分:3)

你有Class.cast(Object obj);方法。但是,仅仅因为你不喜欢它而使用而不是常规方式是愚蠢的。

它也是一个额外的方法调用而不是编译时构造,因此它们并不直接相互对应。

更不用说评论中已经提到的6ton该示例可以通过泛型来避免......

答案 1 :(得分:2)

您可以使用class.cast(Object)。 阅读Java Class.cast() vs. cast operator

Foo.class.cast(list.get(0)).getBar();

但是,我建议您使用变量

Foo foo = (Foo)list.get(0);
Bar bar = foo.getBar();