Java匿名类可以用Lambda写,但是如果需要实现多个方法怎么写呢? 10

比如线程类newThread(newRunnable(){@Overridepublicvoidrun(){System.out.println("Anonymousst... 比如线程类
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Anonymous style thread run ***************");
}
}).start();
只需要实现run()方法,不会有歧义,可以这么写:
new Thread(() -> System.out.println("Lambda Style thread run ******************")).start();

但如果一个接口里有多个方法,这方面应该怎么写呢?
展开
 我来答
DoramiHe
2018-07-07 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25334 获赞数:59536
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
Lambda表达式,也常常叫做闭包,是一个在很多现代程序语言中十分流行的特性。在众多不同的原因中当中,Java平台最迫切的原因之一是lambda表达式能简化多线程上的集合的分布式处理。列表和集是有代表性,在客户端代码获取一个来自集合的迭代器,那么使用通过元素的迭代和轮流取出并处理他们。如果在并行中处理不同元素,客户端代码的有责任把它组织起来。
在Java 8中,目的是替代集合提供的函数,获取函数并使用他们以各种不同的方法处理元素(我们将使用非常简单的函数forEach为例子,通过它获取一个函数并适用于任何元素)优势是转变集合在内部迭代并组织那些元素,将来自客户端的并行代码转移到库代码中。
可是 ,为了让客户端代码在这里取得优势,需要一个简单方法给集合函数提供一个函数。当前标准的方式是建立一个匿名类实现对应的接口。但定义内部匿名类的语法太笨拙了
举个例子,在forEach函数集合上将获取Block接口的一个实例并调用它的apply函数为任何元素。
interface Block { void apply(T t); }
假设我们想使用forEach在List中的Point元素(Java.awt.Point)上调换x和y的坐标。使用内部匿名类实现Block我们通过调换函数,像这样:
pointList.forEach(new Block() {
public void apply(Point p) {
p.move(p.y, p.x);
}
});
可是,使用Lambda,同样的效果可以用更简介的形式来写:
pointList.forEach(p -> p.move(p.y, p.x));
追问
答非所问!
尧__不可及
2018-07-28 · 超过24用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:45.6万
展开全部
不可以的,用了lambda表达式里面只能有一个方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式