【问题标题】:Using "this" keyword inside nested static class java在嵌套的静态类java中使用“this”关键字
【发布时间】:2013-12-01 04:52:13
【问题描述】:

我有一个类说A,还有一个静态嵌套类说B

public class A {
    public static class B {
        B(Temp x) {
            x.reg(this); // need to pass the nested class reference.
        }
    }
}

上面的代码正确吗?我们可以在嵌套的静态类构造函数中使用this 关键字吗?

请帮助我。谢谢。

【问题讨论】:

  • 你为什么不尝试编译它?
  • @Christian 我只是想知道,这是传递参考的正确方法吗?
  • 您希望this 指代什么? A还是B?是的,您可以在与任何其他类相同的内部/嵌套类中使用 this
  • @Radiodef 我想使用“this”来指代 B。
  • 那么是的,你可以这样做。

标签: java static static-class


【解决方案1】:

是的,是的。对于运行时,内部类只是另一个独立的类。如果内部类不是静态的,它只会引用外部类,但在你的情况下,它是静态的,所以不均匀,所以就像你在新文件中创建了一个新类

只要确保你写的是“public”,而不是“Public”

【讨论】:

    【解决方案2】:

    1) 静态嵌套类不需要引用 Outer 类,但非静态嵌套类或 Inner 类需要引用 Outer 类。

    2) 内部类(或非静态嵌套类)可以访问外部类的静态和非静态成员。静态类不能访问 Outer 类的非静态成员。它只能访问 Outer 类的静态成员。

    3) 没有外部类的实例就不能创建内部类的实例,并且内部类可以引用它嵌套的外部类中定义的数据和方法,因此我们不需要将对象的引用传递给内部类的构造函数。因此,内部类可以使程序简单明了。

    更多信息请参考http://www.geeksforgeeks.org/static-class-in-java/

    【讨论】:

      【解决方案3】:

      静态类的行为就像static 方法一样。这个类属于类但不属于实例。因此,this 在静态上下文中没有任何意义。

      【讨论】:

        猜你喜欢
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        • 1970-01-01
        • 2015-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多