2016-06-13 3 views
0

У меня есть простой вопрос для класса, который я пишу под названием AssassinNodeData. Я пытаюсь написать простой метод equals(). Я хочу, чтобы проверить, является ли объект Object объектом AssassinNodeData, а поле игрока этого объекта не учитывает регистр, в поле игрока.Проверка объекта и параметра

Это мало того, что я до сих пор:

public boolean equals(Object data) { 
    AssassinNodeData other = (AssassinNodeData) data; 
    if (!(data instanceof AssassinNodeData) && !other.getPlayer().equalsIgnoreCase(player)) 
     if (!(data instanceof String) && !other.getPlayer().equalsIgnoreCase(player)) 
      return false; 
    return true; 
} 

Любые предложения будут оценены!

+0

Ну, ваше описание говорит о параметре 'Object', но до сих пор ваш метод имеет только параметр' String' ... –

+0

@JonSkeet Aah Я вижу - так что я должен изменить параметр, который я передаю Object вместо строки? Я обновил код в описании вопроса. – Ani

+0

Ну, вы обновили код, так что теперь это тип 'AssassinNodeData', который все еще не тот, который вы описали ... –

ответ

0

equals метод не должен быть static, правильный способ объявления это:

public boolean equals(Object obj) { 

И здесь вам нужен код, например:

if (!(obj instanceof AssassinNodeData)) { 
     return false; 
    } 
    AssassinNodeData other = (AssassinNodeData) obj; 
    return other.getPlayer.equals(player); 

Как вы можете видеть, мы сначала проверяем если объект является правильным классом, а затем мы передаем его классу, который мы ожидаем. После этого вы просто получаете поля от другого и сравниваете их с полями текущих объектов.

+0

Спасибо! Позвольте мне попытаться выяснить, будет ли это работать ... – Ani

+0

Я обновил весь класс, и вот что получилось - комментарии, предложения? – Ani

Смежные вопросы