拥有嵌套的公共接口是否完全可以接受?

时间:2013-05-29 12:52:11

标签: java

我有几个接口都只有一个方法,它们都非常相似。我知道它有效,但我应该或不应该像这样分组:

public class InterfaceGroup {
    public interface Type1 {
        public void method(int a);
    }
    public interface Type2 {
        public void method(String s);
    }
    public interface Type3 {
        public void method();
    }
}

然后将其作为InterfaceGroup.Type1在外部引用。

3 个答案:

答案 0 :(得分:6)

是的,拥有这样的设计有时会很有帮助。例如,它是Java标准库中Map.Entry的选择。

然而,这种设计的缺陷是你定义了一种不起类型作用的类型,实际上它实际上是不合适的。如果我发现在库中我使用这种类型只是为了减少源代码文件的数量而存在,我至少会有点恼火:-)另一方面,当我编写代码时其可见范围仅在实施范围内,我无情地使用这些技巧。

答案 1 :(得分:0)

我认为TimeUnit也有,但它们是枚举,我发现this post可以解释为什么可以这样做。

答案 2 :(得分:0)

没有任何技术原因可以解决这个问题,但我不确定这会产生可理解的代码。程序员通常会期望有一个接口可以实现,而在你的命题中并非如此。

请注意,源文件的数量可能会更小,但类文件的数量会更大,因为InterfaceGroup及其所有嵌套类型都将编译为单独的类文件。