gpt4 book ai didi

java - 为什么要在 Java 中使用静态嵌套接口(interface)?

转载 作者:bug小助手 更新时间:2023-10-28 10:40:57 25 4
gpt4 key购买 nike

我刚刚在我们的代码库中找到了一个静态嵌套接口(interface)。

class Foo {
public static interface Bar {
/* snip */
}
/* snip */
}

我以前从未见过这个。原始开发人员遥不可及。因此我不得不问:

静态接口(interface)背后的语义是什么?如果我删除 static,会发生什么变化?为什么会有人这样做?

最佳答案

上面例子中的static关键字是多余的(嵌套接口(interface)自动是“静态的”),可以去掉而不影响语义;我建议将其删除。接口(interface)方法上的“public”和接口(interface)字段上的“public final”也是如此——修饰符是多余的,只会给源代码添加困惑。

无论哪种方式,开发人员都只是简单地声明了一个名为 Foo.Bar 的接口(interface)。与封闭类没有进一步的关联,除了无法访问 Foo 的代码也将无法访问 Foo.Bar。 (从源代码 - 即使 Foo 是包私有(private)的,字节码或反射也可以访问 Foo.Bar!)

如果您希望仅在外部类中使用嵌套接口(interface),则以这种方式创建嵌套接口(interface)是可以接受的样式,这样您就不会创建新的顶级名称。例如:

public class Foo {
public interface Bar {
void callback();
}
public static void registerCallback(Bar bar) {...}
}
// ...elsewhere...
Foo.registerCallback(new Foo.Bar() {
public void callback() {...}
});

关于java - 为什么要在 Java 中使用静态嵌套接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com