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

围绕条件链接的Java功能界面

林修雅
2023-03-14

最近一直在尝试玩弄功能接口链接,我正在尝试了解以下是否可能。

如果我有一个这样的FI:

@FunctionInterface
public interface MyProcessor<T, R> {
   T process(T t);

   default MyProcessor<T, R> andThenDoThis(MyProcessor<T, R> after) {
      return (T t) -> process(t); return after.process(t);
   }

}

我想知道我是否可以围绕检查逻辑构建流程链...所以下面是简单明了的示例

MyProcessor<String, String> uprocessor = string -> string.toUpperCase();
MyProcessor<String, String> lprocessor = string -> string.toLowerCase();
MyProcessor<String, String> processor = lprocessor.andThenDoThis(uprocessor);
System.out.println(processor.process("Justin"));

但我试着做下面这样的事情,想知道这样做是否合理:

MyProcessor<String, String> uprocessor = string -> string.toUpperCase();
MyProcessor<String, String> lprocessor = string -> string.toLowerCase();
MyProcessor<String, String> processor = lprocessor;

if (true) {
   processor.andThenDoThis(uprocessor);
}

System.out.println(processor.process("Justin"));

上面的方法不起作用,我有点理解为什么,但有没有一个适当的方法可以让我达到我想要在这里完成的目标。我已经找过了,可惜没有找到一个关于这个问题的方案或答案。

谢谢伙计们。

共有1个答案

欧阳安阳
2023-03-14

看起来您的andThendoThis方法返回的是一个新实例,而不是修改现有实例。你是说

processor = processor.andThenDoThis(uprocessor);
 类似资料:
  • Network(请求列表页面) Composer(构造请求) Log(日志平台) Rules(操作规则配置界面) Values(存放KeyValue的系统) Plugins(插件列表页面) WebSocket(WebSocket抓包功能) Filter(设置Network请求列表的过滤条件) Settings(设置对话框) Files(上传大块内容文件) Weinre(weinre列表) HTTP

  • 我目前正在尝试绕世界x轴旋转一个位置向量(0,0,1),然后将其旋转回其原始位置(只是尝试使其工作)。我阅读了旋转矩阵,并使它工作(排序),但我现在相当卡住了。 如图和代码所示,我在起点(0,0,1)处创建了一个立方体,并将其向下旋转30度。但顺时针旋转时,它的旋转角度似乎超过30度。但是,当我逆时针(30度)旋转它时,它确实旋转了适当的量。这导致它没有在它应该(0,0,1)的起点处结束。 我想知

  • 问题内容: 我有一个定义如下的指令- 我遇到的问题是从未调用Link函数。谢谢! PS编译逻辑的原因是该指令是递归的。 问题答案: 如果您的意思是未调用,则很清楚:编译函数已返回链接函数。定义为不再重要,将被忽略。

  • 本文向大家介绍Android高级界面组件之拖动条和评星条的功能实现,包括了Android高级界面组件之拖动条和评星条的功能实现的使用技巧和注意事项,需要的朋友参考一下 一      拖动条         安卓手机音量设置都是给出一个拖动条,使得用户能够拖动滑块进行设置,这里我们介绍拖动条。 安卓拖动条控件是继承自ProgressBar控件,所以它能够支持ProgressBar的xml属性。但是他

  • 问题内容: 当我看一看lambda表达式时,这本书涉及一个只有一种抽象方法的 功能接口 。我的问题针对该测验问题 我知道最后一个不是,但是我认为第一个和第二个应该是功能接口。但是书上说第二个不是。为什么?它不重写方法吗?因此,即使在第二秒,也不是只有一种抽象方法吗? 问题答案: 一种简单的查找方法是尝试定义一个实现的类。编译器会告诉您需要同时实现和。 您以为可以覆盖,这是可以理解的,但是它们实际上

  • 我使用lambda函数中的functional方法实现了函数接口。所有的工作都很好,只是我遇到了一个错误,即必须实现这个继承的抽象方法(在我的例子中是函数方法)。现在我很困惑。我使用lambda函数实现了这个函数方法,为什么我要再次实现这个方法。函数方法的实现是如何正确完成的?我的代码: 谢谢你的帮助。:)