Можно ли в Java проверить отношения? - PullRequest
0 голосов
/ 06 августа 2009

В Java мы можем использовать ключевое слово instanceOf для проверки отношения isA. Но можно ли проверить отношения hasA?

Ответы [ 5 ]

4 голосов
/ 06 августа 2009

Вы хотите проверить, имеет ли объект свойство определенного типа? Нет встроенного способа сделать это - вам придется использовать отражение.

Альтернативой является определение интерфейса с соответствующим свойством, а затем проверка, реализует ли объект этот интерфейс, используя instanceof.

Почему вы хотите это сделать? Это просто домыслы, или вы имеете в виду конкретную проблему? Если это последнее, пожалуйста, уточните: возможно, есть лучший способ решения этой задачи.

2 голосов
/ 06 августа 2009

Я полагаю, что вы могли бы сделать это с помощью Reflection, но я не понимаю, как это было бы полезно в контексте Java. Java спроектирован как язык программирования, а не язык объектного моделирования.

РЕДАКТИРОВАТЬ - Я предполагаю, что вы хотите сделать это на лингвистическом уровне ... вместо того, чтобы просто кодировать целую кучу методов hasA.

1 голос
/ 06 августа 2009

Отношение 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

}

Вы можете просматривать и изменять ссылку, используя геттер и сеттер. Вы можете проверить отношение, используя метод hasAnotherClass ().

1 голос
/ 06 августа 2009

Если вы напишите свой собственный метод для этого.

public class Human {

    private Human parent;

    ..
    public boolean hasParent() {
         return parent!=null;
    }

}
0 голосов
/ 06 августа 2009

Простые конструкции ассоциации / агрегации не являются элементами языка, вы пишете их в программном коде. Таким образом, вы пишете методы проверки тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...