码迷,mamicode.com
首页 > 其他好文 > 详细

lambda和抽象类

时间:2018-06-09 13:15:47      阅读:535      评论:0      收藏:0      [点我收藏+]

标签:turn   version   一个   timer   get   new   system   有一个   this   

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和抽象类

标签:turn   version   一个   timer   get   new   system   有一个   this   

原文地址:https://www.cnblogs.com/chenglc/p/9158949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!