JSObject.equals() говорит, что JSObject.getWindow() не равно JSObject.getWindow()

Документация JSObject.equals гласит:

Определяет, ссылаются ли два объекта JSObject на один и тот же экземпляр.

В противоположность этому следующее выражение оценивает false:

JSObject.getWindow(applet).equals(JSObject.getWindow(applet))

Я ожидал true...

1 ответ

Похоже, что getWindow возвращает новый JSObject который описывает окно. Так что каждый звонок getWindow это новый экземпляр, но с теми же данными, поэтому equals возвращает false. Оба объекта JSO описывают окно, но не являются одним и тем же объектом.

public class MyClass
{
  int a;
  public MyClass(int arg)
  {
    a = arg;
  }

  public MyClass getMyClass()
  {
    return new MyClass(a);
  }

  public static void main(String args[])
  {
    MyClass parent = new MyClass(1);
    MyClass obj1 = parent.getMyClass();
    MyClass obj2 = parent.getMyClass();
    System.out.println(obj1.equals(obj2));        
  }
}

Это печатает false, потому что, хотя объекты имеют одинаковое значение, они все равно являются разными объектами.

Изменить: обновлено для использования get способ прояснить ситуацию.

Другие вопросы по тегам