Есть ли в 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)
?