实例 of 在 java 中被认为是一种不好的做法。但我不知道在这种情况下如何避免。
假设我有一个抽象类 ArtObject
并且有一些子类,例如 Painting
、Engraving
等。我有一个类 Museum
,其中包含 ArtObject
的 ArrayList
。
例如,我想打印有关 Museum
中所有 Painting
对象的信息。
我应该做这样的事情吗?:
public void printAllPaintingsInfo() {
for (int i = 0; i < artObjects.size(); i++) {
if (artObjects.get(i) instanceof Painting) {
System.out.println(artObjects.get(i));
}
}
}
或者存在更好的方法?
最佳答案
您可以向 ArtObject
添加一个方法 isPainting()
,默认情况下 return false;
并重写为 return true;
在绘画中。
然后你就可以写了
public void printAllPaintingsInfo() {
for (ArtObject ao : artObjects)
if (ao.isPainting())
System.out.println(ao);
}
或者在 Java 8 中你可以这样写
artObjects.filter(ArtObject::isPainting).forEach(System.out::println);
关于java - java中Instanceof的正确用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127934/