Я не знаю, как этот способ передачи объекта в качестве параметра называется. Поэтому я не знал, что искать на сайте. Мои извинения, если это было задано раньше, и я уверен, что это так.Что означает эта часть Java?
Может кто-нибудь сказать мне, какая разница между этими двумя способами передачи объекта в качестве параметра? И почему я не могу переопределить свойства, а также методы в первую очередь?
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() {
}
}));
Строка «строка агд» не передается в конструктор, как я ожидал бы. Вместо этого жалуется на то, что не найдет конструктор OtherObject(). Почему Java не распознается Я пытаюсь отправить аргумент конструктору?
Спасибо за чтение!
* «Тогда у меня есть второй вопрос» * ** ** Один вопрос на вопрос, пожалуйста. В частности, см. [Тур] и [помощь], в частности [* Как задать хороший вопрос?] (/ Help/how-to-ask) –
Прочитайте, что такое анонимные классы .... – Garry
Лучше всего если вы разделите свои 2 вопроса как отдельные вопросы. Таким образом, ответы всегда будут касаться текущего вопроса. Как и другие, создание класса внутри другого класса (как и вы здесь) называется анонимным внутренним классом. Если вы все еще изучаете основы, я лучше всего это сделаю немного позже, пока вы не почувствуете себя комфортно. – miva2