gpt4 book ai didi

Java 嵌入式静态接口(interface)

转载 作者:行者123 更新时间:2023-11-30 09:40:30 24 4
gpt4 key购买 nike

我今天在工作中遇到了一些 Java 代码:

public interface A {

public static interface AObj {
String toXml();
int getCode();
}

public static interface AMap {
String toXml();
int blah();
}
...
}

我以前没有遇到过将静态接口(interface)嵌入到现有接口(interface)中的情况。这没有多大意义。有人可以评论:

a) 这是好的设计实践吗b) 这与拥有单独的接口(interface)文件相比有什么好处。c) 这是由一位 C++ 程序员编写的,我的印象是他们正在尝试重新创建 namespace 。如果是这样,为什么不直接使用包呢?

欢迎任何评论。

问候,阿利斯泰尔。

最佳答案

好的/坏的做法是有争议的。如果嵌套接口(interface)是与其父级相关的不可分割的实体,通常会嵌套接口(interface)。

看看java.util.Map的源代码.它愉快地将 Map.Entry 嵌入其中。作者是Josh Bloch ,绝对不是没有经验的 Java 开发人员。所以我确信以这种方式设计界面的背后一定有一个有效的推理。

这是它的样子(JavaDoc 和注释被删除)。

public interface Map<K,V> {
int size();
boolean isEmpty();
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
V put(K key, V value);
V remove(Object key);
void putAll(Map<? extends K, ? extends V> m);
void clear();
Set<K> keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();

interface Entry<K,V> {
K getKey();
V getValue();
V setValue(V value);
boolean equals(Object o);
int hashCode();
}

boolean equals(Object o);
int hashCode();
}

关于Java 嵌入式静态接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394483/

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