Всякий раз, когда вы определяете метод toString
в классе:
class ArbitaryClass {
String toString() { System.out.println("Object of ArbitaryClass."); }
}
Затем, когда вы вызываете System.out.println
для его экземпляра, запускается метод toString
:
System.out.println(new ArbitaryClass()); // Will print Object of ArbitaryClass.
Итак, когда вы пытаетесь запустить new Hello().r1.run()
, он просто вызывает out.println(this)
, ( this ) представление текущего объекта ( new Hello () ) класса, который, в свою очередь, вызовет метод toString
и напечатает сообщение «Hello, world!» .
И до тех пор, пока вы вызываете out.println(this)
или out.println(toString())
внутри класса, тогда лямбда имеет доступ к его свойствам и методам.