在java中,我们可以使用 instanceOf 关键字来检查isA关系。但是也可以检查hasA关系吗?
答案 0 :(得分:4)
您的意思是要检查对象是否具有特定类型的属性?没有内置的方法可以做到这一点 - 你必须使用反射。
另一种方法是定义一个具有相关属性的接口 - 然后使用instanceof
检查对象是否实现了该接口。
你为什么要这样做呢?这只是猜测,还是你有一个特定的问题?如果是后者,请详细说明:可能有更好的方法来完成任务。
答案 1 :(得分:2)
我想你可以用Reflection做到这一点,但是我无法看到这在Java的上下文中是如何做的有用的。 Java旨在成为一种编程语言,而不是对象建模语言。
编辑 - 我假设你想在语言层面上做这件事......而不仅仅是编写一大堆'hasA'方法。
答案 2 :(得分:1)
如果您编写自己的方法来执行此操作。
public class Human {
private Human parent;
..
public boolean hasParent() {
return parent!=null;
}
}
答案 3 :(得分:1)
hasA关系通常被建模为类中的私有变量:
Public class AClass {
private AnotherClass reference;
public AClass() {
reference = null;
}
public boolean hasAnotherClass(){
return reference != null;
}
// getters and setters are left out for readability
}
您可以使用getter和setter查看和修改引用。您可以使用hasAnotherClass()方法检查关系。
答案 4 :(得分:0)
普通关联/聚合构造不是语言元素,您可以在程序代码中编写它们。所以你也写了检查器方法。