微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何调用私有本地类

如何解决如何调用私有本地类

所以,在一个更大的类中,有一个本地私有类,我稍后需要将其用于方法,但我不知道如何访问它...

我无法更改的私有类,因为它是练习的一部分,如下所示:

private class Counter 
 {
   String element;
   int frequency;             
   Counter (String element) 
   {
     this.element = element;
     frequency = 0;
   } 
   String element() {
       return this.element;
   }
 }

我需要实现的方法是将 Id 及其频率添加到频率列表 lf 中,如下所示:

private void update (String id,IList<Counter> lf) 
  {
      
  }

我正在尝试使用 IList 中的 add 方法,但我不知道如何使用类型 Counter,因为它是一个私有类,我无法访问它。

解决方法

假设以下起始类(不,这不是解决方案)

public class Bigger {

    // inner class should not be changed
    private class Counter {
        String element;
        int frequency;             

        Counter (String element) {
            this.element = element;
            frequency = 0;
        } 

        String element() {
            return this.element;
        }
    }

    private void update (String id,IList<Counter> lf) {
        // TODO 
    }
}

要访问 Counter 中的 update,我们可以这样写:

public class Bigger {
    // ...
    private void update (String id,IList<Counter> lf) {
        Counter counter = new Counter(id);
        // eventually call counter.element()
        // or accessfields like counter.frequency = 1;
        // TODO 
    }
}

注意:Counter 不是本地类,而是内部类(我假设是一个,因为本地类不能声明为 private)。

JLS 6.6.1 允许访问私有内部类,甚至从同一个 包含 类中访问此类类的私有成员:

否则,成员或构造函数被声明为私有。仅当访问发生在包含成员或构造函数声明的顶级类或接口的主体内时,才允许访问。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。