当前位置: 首页 > 面试题库 >

Java-如果字段具有相同的名称,则如何访问外部类字段

景明诚
2023-03-14
问题内容

考虑以下代码

class OuterClass{
    class InnerClass{
        int x;
        int y;
        void calculateX(){
            x = y+z;//I want to access the y field of the outer class
        }
        void printX(){
            print();
        }
    }
    int y;
    int z;
    InnerClass instance;
    OuterClass(int y,int z){
        this.y = y;
        this.z = z;
        instance = new InnerClass();
        instance.y = 10;
        instance.calculateX();
        instance.printX();
    }
    void print(){
        System.out.println("X:"+instance.x+"\nY:"+y+"\nZ:"+z+"\n");
    }
}

如果名称重叠,如何访问外部类的字段?

我尝试了以下方法:

x=super.y;
x=OuterClass.y;

并收到编译错误。

现实生活中会不会发生这种情况?


问题答案:

最好的解决方案是为字段赋予有意义的名称和不同的名称。但这并不总是可能的…

要获取字段或外部实例,您可以使用

OuterClass.this.y;

或者该字段是静态的

OuterClass.y;

注意:y通常是缩写this.y(取决于y实际定义的位置)

同样,您需要调用外部类的实例方法。

OuterClass.this.method();

要么

OuterClass.method(); // static

注意:在Java 8中,您有可能是基于实例的方法引用。例如

 list.stream().filter(OuterClass.this::predicate);


 类似资料:
  • 我使用的是,我需要展平包含同名字段的文档。 我创建的文档如下所示: 在那之后,我试图像下面这样压平文档: 我的主要方法是: 展平后,我得到的文档包含一个展平字段,但我必须得到两个展平字段。 如何解决此问题?

  • 我有一个PDF文件,其中包含一个表单,其中的字段具有相同的字段名。这是为了共享文档中的数据而做的。例如,我有合同,此文档的每一页都必须有公司名称,我将公司名称写在一个表单字段中,并将其复制到当前文档的所有页面,但是当我尝试使用库阅读此文档时,我没有得到此数据,因为只创建一个字段名为的字段,而另一个字段名为clean。 如何使用库读取具有相同字段名称的字段?

  • 问题内容: 我有一个字段和一个具有相同名称的局部变量。如何进入该领域? 码: 在c ++中使用::运算符,如下所示: 是Java中的::运算符吗? 问题答案: 那不是全局变量,而是实例变量。只需使用: (有关的含义,请参见JLS第15.8.3节。) 对于 静态 变量(人们在谈论全局变量时通常指的是 静态 变量),您可以使用类名来限定变量名: 在大多数情况下,我宁愿不要使用与实例或静态变量同名的局部

  • 我正在探索GraphQL,想知道是否有任何重命名响应字段的方法,例如我有一个POJO与这些字段 GraphQL查询: 我的回答是这样的 我是否可以将名称字段重命名为类似用户名的名称,以便我的回答如下

  • 问题内容: 我有一个班和一个子班 好的,在05行中,id喜欢访问A类的方法测试。但是我陷入了循环,因为我不知道如何指定使用A类的方法。 有任何想法吗? 问题答案: 编辑:正如@Thilo提到的:避免在外部类和内部类中使用相同的方法名称,这将避免命名冲突。

  • 问题内容: 我今天在另一个问题中提出了这个问题,但是 由于措辞的方式,恐怕无法解决任何问题。 我有一个json输入,其中包含以下数据: 杰森 如您所见,option_value项是一个对象中的Array和 另一个对象中的简单字符串。 我怎样才能让Gson正确处理呢?我的类将此描述为 List对象,因此它适用于option_value是 数组的前几个项目,但是当它成为字符串时,应用程序崩溃,并且我收