Java—多态性问题
我有一个图书班,然后是一个小说班,还有一个扩展图书班的科学图书班 我使用book类制作了一个ArrayList,然后将小说和科学书籍插入其中。现在我试着遍历ArrayList来计算有多少本小说。我怎么知道Java—多态性问题,java,arrays,polymorphism,arraylist,Java,Arrays,Polymorphism,Arraylist,我有一个图书班,然后是一个小说班,还有一个扩展图书班的科学图书班 我使用book类制作了一个ArrayList,然后将小说和科学书籍插入其中。现在我试着遍历ArrayList来计算有多少本小说。我怎么知道 我很想看到一些这样的例子!我已经做了一段时间了。使用instanceof e、 g 使用instanceof e、 g 您可以使用instanceof检查对象的真实类型: List<Book> books = new ArrayList<Book>(); books.a
我很想看到一些这样的例子!我已经做了一段时间了。使用
instanceof
e、 g
使用
instanceof
e、 g
您可以使用
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++;
}
List books=new ArrayList();
图书。添加(aNovel);
图书。添加(电子图书);
int novelCount=0;
用于(书籍:书籍){
如果(小说的书实例)
novelCount++;
}
您可以使用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++;
}
List books=new ArrayList();
图书。添加(aNovel);
图书。添加(电子图书);
int novelCount=0;
用于(书籍:书籍){
如果(小说的书实例)
novelCount++;
}
您可以按照以下思路做一些事情:
public int getNovelCount(List<Book> bookList) {
int novelCount = 0;
for (Book book : bookList) {
if (book instanceof Novel) {
novelCount++;
}
}
return novelCount;
}
public int getNovelCount(List bookList){
int novelCount=0;
用于(书籍:图书清单){
如果(小说的书实例){
novelCount++;
}
}
返回novelCount;
}
if语句仅适用于新对象,即科学图书对象在if语句中返回false,因此不被计算。您可以按照以下方式执行操作:
public int getNovelCount(List<Book> bookList) {
int novelCount = 0;
for (Book book : bookList) {
if (book instanceof Novel) {
novelCount++;
}
}
return novelCount;
}
public int getNovelCount(List bookList){
int novelCount=0;
用于(书籍:图书清单){
如果(小说的书实例){
novelCount++;
}
}
返回novelCount;
}
if语句仅适用于新对象,即科学书籍对象在if语句中返回false,因此不被计算。尽管Froadie正确地说,
instanceof
将允许您检查每个元素的特定类型,这通常表明您的设计有问题
也许值得考虑的是,为什么你必须知道小说的数量。你想对一本书中不存在的小说调用一个方法吗?你用的所有书的收藏可能是对书进行分组的错误方式吗?如果您想提供某种计数方法,是否值得考虑一种抽象书籍计数方式
如果您发现这种情况没有引起设计问题,那么您的答案是
instanceof
。尽管Froadie说instanceof
将允许您检查每个元素的特定类型是正确的,但这通常表明您的设计有问题
也许值得考虑的是,为什么你必须知道小说的数量。你想对一本书中不存在的小说调用一个方法吗?你用的所有书的收藏可能是对书进行分组的错误方式吗?如果您想提供某种计数方法,是否值得考虑一种抽象书籍计数方式
如果您发现这种情况不会引起设计问题,那么您的答案是
instanceof
。可以使用instanceof
或book.getClass.equals(Novel.class)
。通过for循环中的ArrayList进行任意循环:
int count = 0;
for(Book book: books){
if(book.getClass.equals(Novel.class)) count++;
}
return count;
可以使用
instanceof
或book.getClass.equals(Novel.class)
。通过for循环中的ArrayList进行任意循环:
int count = 0;
for(Book book: books){
if(book.getClass.equals(Novel.class)) count++;
}
return count;
发布一些代码。这将帮助我们回答你的问题这是家庭作业吗?如果是这样,添加适当的标记…发布一些代码。这将帮助我们回答你的问题这是家庭作业吗?如果是这样,添加适当的标签…很好的反馈,我在做更大的事情时一定会考虑到这一点。很好的反馈,我在做更大的事情时一定会考虑到这一点。啊,这就是工作原理!非常感谢。我试图实现它。instanceof比这种方法更好。我只是建议另一种方法。啊,那就是它的工作原理!非常感谢。我试图实现它。instanceof比这种方法更好。我只是在建议另一种方法。