我不知道这种将对象作为参数传递的方式是什么。因此,我不知道要在该网站上搜索什么。如果这已经被问过了,我深表歉意。
有人可以告诉我这两种将对象作为参数传递的方式有什么区别吗?为什么我不能以第一种方式覆盖属性和方法?
myObject.doSomethingWithOtherObject((new OtherObject() {
// why can't I override properties here?
public String toString () {
return "I am the other object.";
}
...
}));
myOtherObject = new OtherObject();
myObject.doSomethingWithOtherObject(myOtherObject);
然后我有第二个问题,但是也许回答第一个问题也会回答这个问题。
为什么这不起作用:
public class OtherObject {
public OtherObject (String str) {
super();
}
}
myObject.doSomethingWithOtherObject((new OtherObject("string arg") {
public void overrideSomething () {
}
}));
字符串“ string arg”没有传递给构造函数,正如我所期望的那样。而是抱怨找不到找不到构造函数OtherObject()。
为什么Java无法识别我正在尝试向构造函数发送参数?
谢谢阅读!
最佳答案
当您执行new OtherObject
然后打开大括号{ ...
时,您正在创建一个新的(匿名)类。不是已经定义的OtherObject类的新Object。看一下Java的匿名类以更好地理解