我想知道是否有可能在foreach循环中直接转换对象。

我们有以下两个类,一个扩展另一个:

class Book {};
class ExtendedBook extends Book {};

现在,我们有一个要遍历的书籍数组,因为它是ExtendedBook搜索,所以我确定所有书籍实际上都是Extended Books。有没有办法直接转换它们?
Book [] books = bookSearch.getBooks("extendedBooks");

for (Book book: books){
   ExtendedBook eBook = (ExtendedBook) book;
   ....
}

这涉及两个步骤。首先遍历这些书,然后在第二步将它们浇铸。一步就能做到吗?

什么不起作用:
// Directly assign it to a different type
for (ExtendedBook book : books){}

// Directly casting the array
ExtendedBooks [] eBooks = (ExtendedBooks []) books;

// Same goes for trying both in one step
for (ExtendedBook book : (ExtendedBook []) books){}

我知道这不是一个真正的痛苦,但是当您保存一个虚拟变量时,使循环更短会更好,并且更具可读性,该变量仅用于转换而不是实际操作。

最佳答案

我可以肯定地确定,您无法按照自己的意愿进行循环。

07-25 20:45