【问题标题】:Why do we need inner interfaces, especially with the private access modifier?为什么我们需要内部接口,尤其是使用私有访问修饰符?
【发布时间】:2019-10-28 08:22:53
【问题描述】:

我是 Java 新手。最近我读到了内部接口,这让我很困惑:首先为什么要使用它们,其次为什么它们也可以被声明为私有而不是外部接口。在我看来,接口应该是公开的,以便所有人都可以使用。

【问题讨论】:

    标签: java access-modifiers


    【解决方案1】:

    内部接口或嵌套接口的主要目的是对相似的事物进行分组。考虑集合中的 Map 接口。它有一个称为Entry 的嵌套接口。没有地图就不能存在条目,因此从逻辑上讲,将它们组合在一起是有意义的。另一方面,可能存在名称为 Entry 的其他接口,这将导致命名空间冲突。因此使用了嵌套接口。 要回答另一个问题,在任何情况下使用访问修饰符都是为了防止未经授权的访问。将嵌套接口设为私有将阻止其他开发人员以不希望的方式实现它们。 希望这会有所帮助。

    【讨论】:

    • 知道为什么要使用私有访问说明符吗?
    • @HarshChaturvedi 私有访问修饰符有什么令人困惑的地方?它准确地说明了访问修饰符的意图:只有封装类才能访问它。这是否是一个好的 设计 决定,这是一个不同的问题(而 IMO 是代码异味的候选者)。
    • 您可以参考下面的答案以清楚了解内部类中的访问修饰符@HarshChaturvedi
    【解决方案2】:

    java内部接口的用途如下

    1. 解决接口具有通用名称时的命名空间问题
    2. 增加封装
    3. 通过将相关接口分组到一个位置来提高可读性。

    嵌套接口可以声明为公共、私有或受保护的。 这与顶级接口不同。顶级接口必须声明为公共或使用默认访问级别。

    在另一个接口的主体中声明一个内部接口。

    public interface Items {
                interface MyList {
                }
            }
    

    在另一个类的主体中声明内部接口。

     public class Items{
                    public interface MyList {
                        void add(Items items);
                        String getItesmNames();
                    }
            }
    

    最后,我们可以如下实现

    public class SpecialItems implements Items.MyList  {
    
    }
    

    当嵌套接口在其封闭范围之外使用时,它必须由它所属的类或接口的名称来限定。

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 2011-04-18
      • 1970-01-01
      • 2015-11-26
      • 2018-02-13
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      相关资源
      最近更新 更多