/**
* 印 this 的時候,會調用 Object.toString()
* 匿名類別的 this:會先調用自己匿名類別的 toString,沒有才去 Object.toString
* Lambda 的 this:會先調用「當下」類別的 toString,沒有才去 Object.toString
*/
public class ThisTest {
Animal a1 = new Animal() {
@Override
public void m(String str) {
System.out.println(this);
}
// @Override
// public String toString() {
// return "anonymous toString";
// }
};
Animal a2 = s -> System.out.println(this);
// @Override
// public String toString() {
// return "this toString";
// }
public static void main(String[] args) {
ThisTest thisTest = new ThisTest();
thisTest.a1.m("xxx");
thisTest.a1.m("aaa");
thisTest.a2.m("ooo");
thisTest.a2.m("bbb");
}
@FunctionalInterface
public interface Animal {
void m(String str);
}
}
2022年8月11日 星期四
lambda 的 this (java8 八)
訂閱:
意見 (Atom)