Udo*_*eld 11 java arrays foreach
我想知道是否可以在foreach循环中直接转换对象.
我们有以下两个类,一个扩展另一个:
class Book {};
class ExtendedBook extends Book {};
Run Code Online (Sandbox Code Playgroud)
现在我们有一系列书籍,我想循环,因为它的ExtendedBook搜索我确信所有书籍实际上都是扩展书籍.有没有办法直接施放它们?
Book [] books = bookSearch.getBooks("extendedBooks");
for (Book book: books){
ExtendedBook eBook = (ExtendedBook) book;
....
}
Run Code Online (Sandbox Code Playgroud)
这涉及两个步骤.首先循环阅读书籍,然后在第二步中投射它们.一个人可以一步到位吗?
什么行不通:
// 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){}
Run Code Online (Sandbox Code Playgroud)
我知道这不是一个真正的痛苦,但保持循环更短将是很好的,也许更可读,因为你保存一个虚拟变量,它只用于铸造而不是实际的行动.