是否有可能在java中检查has-a关系?

时间:2009-08-06 10:07:22

标签: java oop

在java中,我们可以使用 instanceOf 关键字来检查isA关系。但是也可以检查hasA关系吗?

5 个答案:

答案 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)

普通关联/聚合构造不是语言元素,您可以在程序代码中编写它们。所以你也写了检查器方法。