i have problem code:
view.getviewtreeobserver().addongloballayoutlistener(new viewtreeobserver.ongloballayoutlistener() { @override public void ongloballayout() { if (android.os.build.version.sdk_int >= android.os.build.version_codes.jelly_bean) { view.getviewtreeobserver().removeongloballayoutlistener(this); } else { //noinspection deprecation view.getviewtreeobserver().removeglobalonlayoutlistener(this); } getdefaultintent(); } });
i want convert code use lambda expression this:
view.getviewtreeobserver().addongloballayoutlistener(()->{ if (android.os.build.version.sdk_int >= android.os.build.version_codes.jelly_bean) { view.getviewtreeobserver().removeongloballayoutlistener(this); } else { //noinspection deprecation view.getviewtreeobserver().removeglobalonlayoutlistener(this); } getdefaultintent(); });
but wont work because this
doesn't refer inner class.
per java specifications,
the value denoted
this
in lambda body same value denotedthis
in surrounding context.
as such, if need use this
refer anonymous object, need use explicit anonymous object, not lambda. work around writing original code.
lambda's tool useful in lots of situations, not need used in all situations.
Comments
Post a Comment