当前位置: 首页 > 知识库问答 >
问题:

Java Lambda表达式中的自定义接口[重复]

施永宁
2023-03-14

我有一个来自库的方法,看起来像这样:

<T> T invoke(K key, EntryProcessor<K, V, T> entryProcessor, Object... arguments);

EntryProcessor接口只有一个方法定义

T process(MutableEntry<K, V> entry, Object... arguments) throws EntryProcessorException;

不幸的是,对于我的用例,我需要EntryProcessorSerializable

一种解决方案是创建一个新类来实现EntryProcatorSerializable,在这种情况下,我必须为每个不同的用例创建一个不同的类。

通常,如果没有Serializable,我可以将invoke方法作为lambda调用,这样就不用创建专门的类包了。

foo.invoke(1L, (entry, arguments) -> { 
    ...
    return null;
});

有没有办法用Serializable接口扩展这个lambda?

共有1个答案

堵睿范
2023-03-14

这个怎么样?

Object[] arguments = new Object[0];
EntryProcessor<Long, String, Integer> it;

it = (EntryProcessor<Long, String, Integer> & Serializable) (entry, args) -> 1;

invoke(1L, it, arguments);
 类似资料:
  • 我有下面的类和对象的ArrayList: 我想要的是从我的列表中得到一个字符串和整数地图,其中包含门票中的目的地和我列表中每个目的地的出现次数。我想它会这样开始,但是我不知道如何继续:

  • 问题内容: 最近,我发现了NSExpression类,我想知道是否有可能评估表达式中的自定义变量。 像这样: 我想用自定义Double值替换此MYVAR字符串。 如果不存在,我将使用循环和类似方法,但希望有一个内置的(并且更快)的解决方案。 谢谢。 问题答案: Xcode 8 GM•Swift 3

  • 我正在测试java的lambda是否与接口函数匹配,我在下面写了代码,它可以工作。我有接口和它的。在构建时,Javalambda被转换为我的接口的实现者。 程序将打印。到目前为止还不错,但是如果我在中添加一些其他函数声明,如下所示: 线程构造函数中的lambda将无法编译,表示 那么,Java编译器什么时候可以决定lambda可以匹配MyHandler的类型,而不管我的函数名是什么?Justing

  • 问题内容: 我计划在我的Swift项目中使用Google Drive API 。我正在尝试通过CocoaPods(v0.39.0)添加Drive SDK。以下是我的Podfile。 我添加了标志,以便CocoaPods可以将Objective-C Pod转换为Swift框架,而不是静态库。 吊舱安装成功。但是,当我构建项目时,出现以下错误。 类“ GTMHTTPUploadFetcher”的接口定

  • 问题内容: 我正在将Java中的项目转换为Kotlin,而令我惊讶的是,该接口使Kotlin中的代码比Java中的代码重。 示例 :我想从MyFragment在MainActivity中设置onBackPressListener。 文件1:MainActivity,文件2:MyFragment,文件3:OnBackPressedListener(接口) Java中的文件1,Kotlin中的文件2,

  • 用Java 8 lambdas到处乱搞。为什么当我向接口添加另一个方法时,这会给我一个错误: 不使用第二个方法也能正常工作:“public int getID(String name)