所以我出于某种原因不喜欢这个:
((Foo) list.get(0)).getBar();
是否可以做这样的事情:
list.get(0).castTo(Foo.class).getBar();
感谢。
答案 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();