考虑一个例子(在java中编译)
public abstract interface Interface {
public void interfacing();
public abstract boolean interfacing(boolean really);
}
Run Code Online (Sandbox Code Playgroud)
为什么接口被"声明"抽象是必要的?是否有适用于抽象接口的其他规则?
最后:如果abstract已经过时,为什么它包含在Java中?抽象界面有历史吗?
什么是一个方法的Java 8功能接口什么都不带,什么都不返回?
即,相当于Action带void返回类型的C#参数?
Runnable用作回调被认为是不好的做法吗?
考虑到这Runnable是用于线程(请参阅它的JavaDoc),我想知道这是否可以 - 或者我是否应该为此目的创建自己的接口.
我所说的是这样的:
public class KeyBinding {
public KeyBinding(KeyStroke stroke, Runnable handler) {
//...
}
}
Run Code Online (Sandbox Code Playgroud) 我可以自己定义,例如:
@FunctionalInterface
interface EmptyEmptyFunction {
void apply();
}
Run Code Online (Sandbox Code Playgroud)
然后按如下方式使用它:
EmptyEmptyFunction m = () -> {System.out.println("Hello World - Java 8!");};
m.apply();
Run Code Online (Sandbox Code Playgroud)
我的问题是:JDK中是否有内置类型
EmptyEmptyFunction,或者我必须自己定义EmptyEmptyFunction
(就像我已经做过的那样)?
这里有许多功能接口
http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
但我似乎找不到一个
与我的"签名" 完全相同的人EmptyEmptyFunction.