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

在java中创建外部类之外的内部类实例[复制]

张啸
2023-03-14

我是Java新手。

我的文件A. java看起来像这样:

public class A {
    public class B {
        int k;
        public B(int a) { k=a; }
    }
    B sth;
    public A(B b) { sth = b; }
}

在另一个java文件中,我试图创建一个调用

anotherMethod(new A(new A.B(5)));

但由于某种原因,我得到了一个错误:没有类型A的封闭实例是可访问的。必须使用类型A的封闭实例(例如x.new B(),其中x是A的实例)来限定分配。

有人能解释一下我怎么做我想做的事吗?我的意思是,我真的需要创建A的实例,然后将其设置为sth,然后将A的实例赋给该方法吗,还是有其他方法可以做到这一点?

共有1个答案

姜钧
2023-03-14

在外部类之外,您可以像这样创建内部类的实例

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();

在你的情况下

A a = new A();
A.B b = a.new B(5);

有关更多详细信息,请阅读Java嵌套类官方教程

 类似资料:
  • 问题内容: 我是Java新手。 我的文件如下所示: 在另一个Java文件中,我试图创建A对象调用 但是由于某种原因我得到了错误: 有人可以解释我该怎么做吗?我的意思是,我真的需要创建的实例,然后设置实例,然后将实例提供给方法,还是有另一种方法呢? 问题答案: 在您的示例中,您有一个内部类,该内部类始终与外部类的实例绑定。 如果您想要的只是嵌套类以提高可读性而不是实例关​​联的一种方式,那么您需要一

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

  • 问题内容: 我想创建一个类,作为的内部类,但是我想写下外部文件。 我怎样才能做到这一点? 这将是很多内部类,而文件将是 巨大的 。 更新 我真正想做的是定义十个类,它们只能由一个类访问。所有这些都在同一包内定义。 谢谢。 问题答案: 将所有类放入包中,并将这些类定义为包私有。 注意没有关键字吗?如果创建类Hello的实例在包中,则您将只能创建该实例的实例。

  • 问题内容: 如何从内部类访问外部类? 我正在重写一种使它在不同线程上运行的方法。从内联线程中,我需要调用原始方法,但是当然只要调用就会变成无限递归。 具体来说,我在扩展BufferedReader: 这个地方给了我我找不到的NullPointerException。 谢谢。 问题答案: 像这样: 上面的测试在执行时显示:

  • 问题内容: 限制条件: 我有一个编写的Maven源代码生成器,它是从具有嵌套名称空间的某些数据文件创建POJO类的。我希望每个名称空间都嵌套为一个内部类。在某些情况下,我最终会得到内部类,这些内部类与最外部类的简单名称相同。 所有类都必须是作用域,因为这是对类型安全包装器的覆盖,例如属性文件,但是是分层的。 我不能更改名称,否则我将更改名称含义和包含数据的名称空间。 给出比我有以下代码: 内部类应

  • 我必须在Java中实现一个名为的接口。 假设是我编写的实现graph的类。 我想创建一个内部类以便“封装”类型的元素。 问题是我不明白内部类应该是还是、还是以及它的实例变量应该声明为还是。对于我将要在中插入的一些最终方法也是如此。 基本上,类节点应该像C语言中的记录类型(带有),并且外部类应该能够访问节点的所有实例变量,而不需要观察器、getter等。