当前位置: 首页 > 知识库问答 >
问题:

如何访问外部类实例?

端木狐若
2023-03-14

下面是静态嵌套类

public class AbstractClass {
    
    String AbstractClass = "AbstractClass";
    
    AbstractClass(){
        
        System.out.println("default constructor");
    }
    
    AbstractClass(String inp){
        
        this.AbstractClass = inp;
        System.out.println(this.AbstractClass);
    }

}

-----

public class MyClass {

     String MyClassVrbl = "MyClass";

    public static class Builder extends AbstractClass {
        
        String staticclassVrbl = "staticclassVrbl";

        Builder() {

        }

        Builder(String inp) {
            super(inp);
            System.out.println("custom construtor");

        }

    }

    public static void main(String[] args) {
        
        MyClass.Builder mc = new MyClass.Builder("calling custom");
        System.out.println(mc.how can access outer class instance variable..?);
        

    }

}

共有1个答案

龚德本
2023-03-14

一旦创建了嵌套类(Builder)实例,父级(MyClass)也必须被实例化..对吗?

情况并非如此,因为嵌套类是静态的。如果它是一个内部非静态类,那么就会有一个外部类的实例与之关联。所以答案是您无法获得外部实例,因为它不存在。此外,在使用构建器模式时,您可能希望使用build()方法访问创建的实例。

 类似资料:
  • 问题内容: 我们如何访问这个实例的外部类:例如 我们如何在Java中访问A的此实例 问题答案: 刚打电话

  • 问题内容: 是否可以从Java内部类中获取对它的引用? 即 问题答案: 您可以像这样访问外部类的实例:

  • 这是我正在研究的一个更大问题的一个简短的子问题。 为什么我不能通过第8行outer class中的inner class的实例访问outer类字段? 字段在内部类中可见。 外部类中的非静态方法仍然存在此问题。 字段的可见性并不重要。无论从哪种方式,它都可以从内部类中看到。 可以通过内部类中的(私有)getter访问该字段,但我出现问题的原因之一是,我希望避免这些。 它应该成为不可变的构建器模式的一

  • 问题内容: 这不是直截了当的问题。在我的情况下,外部类变量和内部类setter方法的参数名称相同。喜欢: 现在,我无法初始化外部类实例变量p,因为它指示内部类。再次,我做不到它得到一个错误。现在如何分配外部p,同时将内部Class方法的参数命名为p? 问题答案: 这是您可以/应该这样做的方式:

  • 这不是直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名称是相同的。比如: 现在我不能用初始化外部类实例变量p,因为它指示内部类。同样,我不能执行会出现错误。现在,我如何分配外部p,使内部类方法的参数与名称p相同?

  • 为什么这段代码不起作用 在这段代码工作的时候? 在第一段代码中,当我试图通过内部类“a”的对象引用内部类“a”的实例变量“x”时,我得到一个错误,说我是在静态上下文中使用内部类。在其他方法中执行相同操作时没有错误。