Поэтому мне это не нравится по некоторым причинам:
((Foo) list.get(0)).getBar();
Можно ли сделать что-то вроде этого:
list.get(0).castTo(Foo.class).getBar();
Благодарю.
Вы можете использовать class.cast(Object)
. Прочитайте Java Class.cast() против оператора трансляции.
Foo.class.cast(list.get(0)).getBar();
Однако я предлагаю вам использовать переменную.
Foo foo = (Foo)list.get(0);
Bar bar = foo.getBar();
У вас есть Class.cast(Object obj);
метод. Но было бы глупо использовать вместо обычного, просто потому, что вам это не нравится.
Это также дополнительный вызов метода вместо конструкции времени компиляции, поэтому они не являются непосредственно эквивалентными друг другу.
Не говоря уже о том, что 6ton
уже упоминал в комментариях, что пример можно избежать с помощью дженериков...
()
)?