- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个可以抛出自定义异常的函数式接口(interface),我的想法是。
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
@FunctionalInterface
public interface ThrowingFunction<T, R> {
R apply(T t) throws MyException;
}
这非常适合使用 apply 函数,但问题是我还想使用 Java 函数的 andThen 功能。当我尝试做类似的事情时。
ThrowingFunction<Integer, Integer> times2WithException = (num) -> {
if(num == null) {
throw new MyException("Cannot multiply null by 2");
}
return num * 2;
};
times2WithException.andThen(times2WithException).apply(4);
我得到了错误
Cannot find symbol: method andThen(ThrowingFunction<Integer, Integer>)
我应该使用什么来代替 FunctionalInterface?还是我需要实现另一个函数才能使其与 andThen 一起使用?
谢谢!
最佳答案
函数式接口(interface)只允许指定一个未实现的函数。但是您可以指定已经具有如下实现的 default
函数:
@FunctionalInterface
public interface ThrowingFunction<T, R> {
R apply(T t) throws MyException;
default <U> ThrowingFunction<T, U> andThen(ThrowingFunction<R, U> follow) {
Objects.requireNonNull(follow); // Fail fast
return t -> follow.apply(this.apply(t));
}
}
关于java - @FunctionalInterface 也实现了andThen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49100034/
这个问题在这里已经有了答案: Should 'Comparable' be a 'Functional interface'? (4 个答案) 关闭 5 年前。 Comparable 和 Compa
尝试编译 Java 时 @FunctionalInterface具有超过 1 个非抽象方法会引发编译错误。 但是,在 Kotlin 中执行相同操作时,不会引发错误或警告,即以下 Kotlin inte
我正在尝试创建一个可以抛出自定义异常的函数式接口(interface),我的想法是。 public class MyException extends Exception { public M
我正在学习将一些 lambda 表示形式写成 FunctionalInterface .所以,要添加我使用的两个整数: BiFunction biFunction = (a, b) -> a + b;
简介 在搜索网络时,我偶然发现了 Benoit Tellier 的博客文章,Next level Java 8 staged builders ,他在其中分享了针对某些用例的分阶段构建器模式的变体。
假设我有以下界面: @FunctionalInterface public interface First { int fun(int a); } 还有 @FunctionalInterface
为什么我不能使用默认方法实现创建 @FunctionalInterface? @FunctionalInterface public interface MyInterface { defau
下面的接口(interface)是 Java 8 中的有效功能接口(interface)吗? @FunctionalInterface interface Normal{ public abs
Said in Javadoc : If a type is annotated with this annotation type, compilers are required to genera
考虑这个接口(interface): @FunctionalInterface public interface ThrowingFunction { R tryApply(T t)
在我的库中,我有一个简单的适配器接口(interface)可以注册。 Adapter firstAdapter = new FirstAdapter(String someParam); Adapte
Said in Javadoc : If a type is annotated with this annotation type, compilers are required to genera
在 Java 8 中,引入了接口(interface)的默认方法,以便在不破坏向后兼容性的情况下向现有接口(interface)添加方法。 由于默认方法是非抽象的,因此它们可用于制作具有多个可覆盖方法
我最初的问题与 this one 完全相同;也就是说,为什么这个接口(interface)有运行时保留策略。 但是接受的答案根本不让我满意,原因有二: 这个接口(interface)是 @Docume
我一直在学习 Java 8 的特性,到目前为止已经成功实现了它们,但我最新的代码引发了两个问题。 第一个问题可以通过强制转换来解决,但是这里不应该发生这种情况,因为类型继承应该是健全的;这是在接受单参
学习 Java 8 Lambda 并想知道编译器如何知道 Comparator 中的哪个方法用于 lambda 表达式?好像不是SAM界面?它有 2 个抽象方法: @FunctionalInterfa
学习 Java 8 Lambda,只是想知道编译器如何知道 Comparator 中的哪个方法用于 lambda 表达式?好像不是SAM接口(interface)?它有 2 个抽象方法: @Funct
我刚开始学习 Camel ,我看到的第一件事是 context.addRoutes(new RouteBuilder() { public void configure() {
Callable 会抛出异常,而 Runnable 不会。 有没有标准的样子 @FunctionalInterface public interface TypedBlock { public
这个问题在这里已经有了答案: FunctionalInterface Comparator has 2 abstract methods (3 个答案) 关闭 3 年前。 我想澄清一下我对@Func
我是一名优秀的程序员,十分优秀!