lambda和抽象类
Posted chenglc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lambda和抽象类相关的知识,希望对你有一定的参考价值。
lambda的使用条件是‘一个接口仅有一个待实现的方法’;
so,lambda不能使用在抽象类上,使用后或提示‘Target type of a lambda conversion must be an interface’
非要使用,需要变通;
例如,抽象类 TimerTask
Timer timer = new Timer(); timer.schedule(new TimerTask() { System.out.println("99999"); }, 1000);
在这里用lambda的话就会报错,但可以把Timer拓展一下
public class MyTimer extends Timer { public TimerTask schedule(final Runnable r, long delay) { final TimerTask task = new TimerTask() { public void run() { r.run(); }}; this.schedule(task, delay); return task; } }
然后使用MyTimer
MyTimer timer = new MyTimer(); timer.schedule(()->{ System.out.println("99999"); }, 1000);
timer.schedule(this::run, 1000);
以上是关于lambda和抽象类的主要内容,如果未能解决你的问题,请参考以下文章