Java 8 中是否有implements
方法关键字的类似物?
假设我有一个功能接口:
@FunctionalInterface
interface LongHasher {
int hash(long x);
}
还有一个包含 3 个静态方法的库来“实现”这个功能接口:
class LongHashes {
static int xorHash(long x) {
return (int)(x ^ (x >>> 32));
}
static int continuingHash(long x) {
return (int)(x + (x >>> 32));
}
static int randomHash(long x) {
return xorHash(x * 0x5DEECE66DL + 0xBL);
}
}
将来我希望能够互换使用对这 3 种方法的任何引用作为参数。例如:
static LongHashMap createHashMap(LongHasher hasher) { ... }
...
public static void main(String[] args) {
LongHashMap map = createHashMap(LongHashes::randomHash);
...
}
我怎样才能确保在编译时LongHashes::xorHash
,LongHashes::continuingHash
并LongHashes::randomHash
具有相同的签名LongHasher.hash(long x)
?