JAVA: 如何比较列表中的 child class
JAVA: How to compare child class in a List
所以我创建了一个 parent class : Animals
public class Animals {
private String type;
public String getType(){
return this.type;
}
}
然后我创建了不同的 child class 像马、熊、狗等扩展动物。
然后我创建了一个 List 列表,其中可以包含 object,它们来自马 class、熊等
但我一直在努力创建一种方法,该方法可以告诉我我的列表是否包含任何熊(来自 Bear Class 的 object)。
我尝试了很多东西。
horse.getClass() returns 没什么
如果我做一个
Horse h = new Horse();
System.out.print(h instanceof Bear);
---> returns 正确这是错误的。
- 与 equals 相同。
- 我还在每个 child class 中创建了一个字符串属性,这样我就可以比较字符串,但是 Java 不会以某种方式将它们读取为字符串。
我好迷茫
问题出在您的 if 语句上。
if(a instanceof Bear);
return true;
你的 if 语句以分号结束,这意味着它是一个空语句,下一行 return true
总是被执行。删除 if 语句后的分号。
在此处阅读更多内容:Semicolon at end of 'if' statement
所以我创建了一个 parent class : Animals
public class Animals {
private String type;
public String getType(){
return this.type;
}
}
然后我创建了不同的 child class 像马、熊、狗等扩展动物。
然后我创建了一个 List
但我一直在努力创建一种方法,该方法可以告诉我我的列表是否包含任何熊(来自 Bear Class 的 object)。
我尝试了很多东西。
horse.getClass() returns 没什么
如果我做一个
Horse h = new Horse();
System.out.print(h instanceof Bear);
---> returns 正确这是错误的。
- 与 equals 相同。
- 我还在每个 child class 中创建了一个字符串属性,这样我就可以比较字符串,但是 Java 不会以某种方式将它们读取为字符串。
我好迷茫
问题出在您的 if 语句上。
if(a instanceof Bear);
return true;
你的 if 语句以分号结束,这意味着它是一个空语句,下一行 return true
总是被执行。删除 if 语句后的分号。
在此处阅读更多内容:Semicolon at end of 'if' statement