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
thisin lambda body same value denotedthisin 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