- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的接口(interface)是 Java 8 中的有效功能接口(interface)吗?
@FunctionalInterface
interface Normal{
public abstract String move();
public abstract String toString() ;
}
最佳答案
Alok 引用的内容是正确的,但他忽略了一些事情,这使得他的最终答案(代码无效)是错误的:
接口(interface)有一种方法String toString()
每个类都已经实现,从 Object
继承. IE。声明的接口(interface)方法已经有一个实现,类似于默认方法。因此,没有编译错误和Normal
可以用作我的MCVE中所示的功能接口(interface):
package de.scrum_master.stackoverflow;
@FunctionalInterface
interface Normal {
String move();
String toString();
}
public
因为他们总是这样。
abstract
也是如此.
package de.scrum_master.stackoverflow;
public class NormalApp {
static void doSomething(Normal normal) {
System.out.println(normal.move());
System.out.println(normal.toString());
}
public static void main(String[] args) {
doSomething(() -> "xxx");
}
}
xxx
de.scrum_master.stackoverflow.NormalApp$$Lambda$1/1530388690@28c97a5
toString
到别的东西,例如
toStringX
,您会看到由于
@FunctionalInterface
编译类时出现预期的错误消息:
Unexpected @FunctionalInterface annotation
de.scrum_master.stackoverflow.Normal is not a functional interface
multiple non-overriding abstract methods found in interface de.scrum_master.stackoverflow.Normal
关于java - 为什么我的@FunctionalInterface 使用两种方法没有编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60359816/
这个问题在这里已经有了答案: 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
我是一名优秀的程序员,十分优秀!