JAVA:如何比较列表中的子类
所以我创建了一个父类:Animals
public class Animals {
private String type;
public String getType(){
return this.type;
}
}
然后我创建了不同的子类,如马、熊、狗等来扩展 Animals。
然后我创建了一个列表 <动物>列表可以包含来自马类、熊等的对象。
但是我一直在努力创建一个方法来告诉我我的列表是否包含任何熊(来自熊类的对象)。
我尝试了很多事情。
horse.getClass() 不返回任何内容
如果我执行了
Horse h = new Horse();
System.out.print(h instanceof Bear);
--->它返回true,这是错误的。
- 与 equal 相同。
- 我还在每个子类中创建了一个 String 属性,这样我就可以比较字符串,但 Java 不会以某种方式将它们读取为字符串。
我很失落。
So I created a parent class : Animals
public class Animals {
private String type;
public String getType(){
return this.type;
}
}
And I then created different child class like horse, bear, dog etc that extends Animals.
I then created a List < Animals > list which can contain object which are either from horse class, bear, etc.
But I've been struggling to create a method that could tell me if yes or no my list contains for i.e any bear (an object from Bear Class).
I tried so many things.
horse.getClass() returns nothing
if i do a
Horse h = new Horse();
System.out.print(h instanceof Bear);
---> it returns true which is wrong.
- Same thing with equals.
- I also created a String attribute in each child class so I can compare the string instead but Java doesn't read them as string somehow.
I am so lost.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题出在你的 if 语句上。
您已经用分号结束了 if 语句,这意味着它是一个空语句,并且始终执行下一行
return true
。删除 if 语句后面的分号。在此处阅读更多信息:“if”语句末尾的分号
The issue is with your if statement.
You have ended your if statement with a semicolon which means its an empty statement and the next line
return true
is always executed. Remove the semicolon after the if statement.Read more here: Semicolon at end of 'if' statement