java 抽象类 能用lambda表达式吗

 我来答
百度网友895a2b2
2017-11-10 · 超过31用户采纳过TA的回答
知道答主
回答量:55
采纳率:81%
帮助的人:24.5万
展开全部

抽象类不能,但是可以拓展一下。

例如,TimerTask是一个抽象类,

Timer timer = new Timer();
timer.schedule(new TimerTask() {
//代码...
}, 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(()->{
//代码...
}, 1000);
//或者
timer.schedule(this::run, 1000);

这样使用就不会报错了。

可以参考这个,换一种思维模式去写代码。

子弹非弹子575
2017-08-01 · TA获得超过392个赞
知道小有建树答主
回答量:450
采纳率:20%
帮助的人:187万
展开全部
你的意思是实例化抽象类能不能用lambda表达式吧,我刚试了,不行。
报错:
Target type of a lambda conversion must be an interface
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunnylife肖
2017-08-01
知道答主
回答量:6
采纳率:0%
帮助的人:5643
展开全部
可以,jdk要8就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式