如您所愿,您可以在Java 8中使用lambda,例如,以替换匿名方法。
可以在此处看到Java 7与Java 8的示例:
Runnable runnable = new Runnable() {
@Override
public void run() {
checkDirectory();
}
};
可以用Java 8中的以下两种方式表示:
Runnable runnable = () -> checkDirectory();
要么
Runnable runnable = this::checkDirectory;
这是因为它Runnable
是一个功能接口,仅具有一个(抽象的)公共非默认方法。
但是…因为TimerTask
我们有以下几点:
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
checkDirectory();
}
};
看起来很熟悉吧?
但是,使用lambda表达式不起作用,因为它TimerTask
是一个抽象类,即使它只有一个抽象的公共非默认方法,它也不是接口,因此也不是功能性接口。
它也不会重构为具有默认实现的接口,因为它带有状态,因此不能这样做。
所以我的 问题 是:在构造Lambda时有什么方法TimerTask
吗?
我想要的是以下内容:
Timer timer = new Timer();
timer.schedule(this::checkDirectory, 0, 1 * 1000);
有什么办法可以使它变得更好呢?
首先请注意,这Timer
实际上是一种过时的API,但是仍然可以解决您的问题,您可以在它周围编写一个小的包装,使该schedule
方法可以接受a
Runnable
,然后在内部将其Runnable
转换为一个TimerTask
。然后,您将拥有schedule
可以接受lambda的方法。
public class MyTimer {
private final Timer t = new Timer();
public TimerTask schedule(final Runnable r, long delay) {
final TimerTask task = new TimerTask() { public void run() { r.run(); }};
t.schedule(task, delay);
return task;
}
}
问题内容: 在互联网上其他任何地方都找不到有效的答案后,我将提交此“自问自答”教程 如何从脚本上运行一个简单的进程?我的代码在本地计算机上运行良好,但是尝试在Lambda上运行时遇到了其他问题。 问题答案: 这是一个简单过程的完整代码示例,以形式启动 。 它也可以在github上找到。 index.js phantom-script.js 要获取可与Amazon Linux机器一起使用的Phant
问题内容: 我有以下代码: 如您所见,期望使用lambda表达式。 现在,我正在使用Java库,但是该应用程序是用Scala编写的。如何将Scala lambda传递给Java代码? 我尝试了以下方法: 但是编译器抱怨: 问题答案: 错误消息列出了支持的参数类型。其中之一是: 从错误消息中,您可以看到您提供了以下类型: 根据Kafka 1 javadoc (在Kafka 1.1中不存在),定义为:
问题内容: 我发现一个有4年历史的项目应该在lambda上安装phantomjs,但是我做错了什么,或者自从创建回购以来事情已经发生了变化,并且不再起作用。克隆并部署此存储库时,尝试运行phantomjs时出现此错误: 如果我使用最新的linux二进制文件而不是此仓库附带的二进制文件,则会收到有关另一个.so文件丢失的不同但相似的错误。 对于上下文,我要安装phantomjs的原因是因为我想在我的
本文向大家介绍在Java中如何使用lambda实现LongUnaryOperator?,包括了在Java中如何使用lambda实现LongUnaryOperator?的使用技巧和注意事项,需要的朋友参考一下 LongUnaryOperator是一个java.util.function函数接口。此函数接口接受单个长值操作数并生成长值结果。LongUnaryOperator接口可以用作lambda表达
我在尝试使用lambda表达式时遇到了这个错误。
我使用Amazon模板使用C#Dotnet3.1创建了一个AWS Lambda解决方案 这将创建一个lambda函数,其处理程序为以及一些文件和 部署它的标准方法是安装 然后运行 请注意,配置文件是可选的,但我在该配置文件下配置了AWS。这将提示输入CloudFormation堆栈名称(例如:foo)和S3 bucket(例如:my-bucket)并将其部署到自定义配置文件下配置的“真实”AWS