JSObject.equals()表示JSObject.getWindow()不等于JSObject.getWindow()

时间:2012-05-01 18:08:55

标签: java applet equals jsobject

JSObject.equals的文档说:

  

确定两个JSObject对象是否引用同一个实例。

相反,以下表达式的计算结果为false

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

我原以为true ...

1 个答案:

答案 0 :(得分:0)

getWindow似乎返回一个描述窗口的新JSObject。因此,每次调用getWindow都是一个新实例,但是使用相同的数据,所以equals返回false。两个JSObject都描述了窗口,但它们不是同一个对象。

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方法更清晰。