我从这段代码开始,它没有编译:
Object[] obj= new Object[2];
obj[0]=new Object () { public String compute() {return "yay 1!";} };
obj[1]=new Object () { public String compute() {return "yay 2!";} };
for (Object o : obj)
System.out.println(o.compute());
因为 Object 没有compute()
为它定义方法。所以,我假设java抛弃了这个函数;但是,以下确实有效:
Object[] obj= new Object[2];
obj[0]=new Object () { public String toString() {return "yay 1!";} };
obj[1]=new Object () { public String toString() {return "yay 2!";} };
for (Object o : obj)
System.out.println(o);
所以,java 必须仍然将函数定义存储在某个地方,对吧?或者这是因为我压倒一切toString()
?
我的问题是如何告诉 javacompute()
存在?
如果无法做到这一点,我是否可以像在第一个示例中那样覆盖对象确实存在的方法?实际代表的方法compute()
是一个采用int
. 这可能很可怕,但我应该覆盖wait(long l)
吗?
提前致谢。