我刚刚遇到以下代码,这让我有点惊讶,不过我在这里将它转换为一个简单的 SSCEE:
custompackage.package1.MyEnum.java
public enum MyEnum implements MyInterface {
CONSTANT_ONE() {
@Override
public void myMethod() {
//do something very interesting
}
},
CONSTANT_TWO() {
@Override
public void myMethod() {
//do something very interesting
}
};
}
interface MyInterface {
void myMethod();
}
现在从这个包之外,我可以执行以下操作:
Consumer<MyEnum> myMethod = MyEnum::myMethod;
但是我根本无法使用MyInterface
,我理解它是包私有的custompackage.package1
。
我不明白到底发生了什么,似乎添加MyEnum
了myMethod()
方法,但它没有实现(从外部)MyInterface
。
这是如何运作的?