我想知道是否可以在foreach循環中直接投射對象。在foreach循環中直接投射
我們有以下兩個類是一個擴展其他:
class Book {};
class ExtendedBook extends Book {};
現在我們有,我想通過循環書籍的數組,因爲它的一個ExtendedBook搜索我敢肯定,所有的書都實際上擴展書籍。有沒有辦法直接施放它們?
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){}
我知道它不是一個真正的痛苦,但你保存一個虛擬變量,它只是用於鑄造保持迴路短將是很好,也許更具有可讀性而不是實際的行動。
看起來'books'是一本Book not ExtendedBook的數組。數組的元素可能是ExtendedBook,但您只能爲每個元素更改此元素。順便說一句,你可以在一個循環中取消裝箱Long [] array = ... for(long l:array){} –