我有一个图书类,然后是一个小说类,还有一个扩展图书类的科学图书类。
我使用Book类制作了一个ArrayList,然后将小说和科学书籍插入其中。现在,我尝试遍历ArrayList,以计算有多少小说。我怎么知道呢?
我很想看到一些这样的例子!我已经做了一段时间了。
发布于 2010-03-17 00:21:27
您可以使用instanceof检查对象的真实类型:
List<Book> books = new ArrayList<Book>();
books.add(aNovel);
books.add(aScienceBook);
int novelCount = 0;
for (Book book : books) {
if (book instanceof Novel)
novelCount++;
}发布于 2010-03-17 00:19:28
使用instanceof。
例如:
int numberOfNovels = 0;
for(int i = 0; i < arrayOfBooks.length; i++){
if(arrayOfBooks[i] instanceof Novel){
numberOfNovels++;
}
}或者,使用foreach:
int numberOfNovels = 0;
for(Book book: arrayOfBooks){
if(books instanceof Novel){
numberOfNovels++;
}
}发布于 2010-03-17 00:24:26
尽管Froadie说instanceof将允许您检查每个元素的特定类型是正确的,但这通常是您的设计存在问题的迹象。
也许值得考虑一下为什么你必须知道小说的数量。你想对一本书上没有的小说调用一个方法吗?您正在为所有图书使用的集合是否可能是错误的图书分组方式?如果您想要提供某种类型的计数方法,那么是否值得考虑一种抽象帐簿计数方式的方法?
如果你发现这个案例没有引起设计上的顾虑,那么instanceof就是你的答案。
https://stackoverflow.com/questions/2456080
复制相似问题