【发布时间】:2025-12-12 04:30:02
【问题描述】:
我最近偶然发现了一段代码,以我对 java 的理解无法解释。我已经创建了相同结构的这个小版本:
public class StaticMethodClass {
static void IDK(Integer i, String somethingElse) {
System.out.println("It has been done");
}
public static void main(String... whatever) {
Action.ITEM.doStuff();
}
}
interface Func {
void exec(Integer i, String somethingElse);
}
enum Action {
ITEM(StaticMethodClass::IDK);
private Func f;
Action(Func f){
this.f = f;
}
void doStuff() {
this.f.exec(1, "huh");
}
}
我无法理解 Action.ITEM 的构造方式,因为它应该有一个实现Func 接口的类。相反,它传递了一个方法,该方法以某种方式隐式转换。
我的问题是这是如何工作的,以及这里适用哪些规则。
【问题讨论】:
-
你应该阅读方法参考。
-
StaticMethodClass::IDK是对函数的引用,该函数具有与Func.exec()方法相同的参数和相同的返回类型,因此这是使用现有方法实现接口的一种简短形式
标签: java oop interface static-methods