嵌套在类中的接口可以是非静态的吗?

嵌套在类中的接口可以是非静态的吗?,第1张

嵌套在类中的接口可以是非静态的吗?

非静态内部类仅仅是语法糖。非静态内部类与标准“外部”类完全相同,但有一个例外:它具有一个外部类类型的不可见字段,该字段已声明

final
。内部类的所有构造函数都必须将要设置此字段的外部实例作为第一个参数..然后,遍历了所有语法糖袋以隐藏它们。

但这确实是这样,您可以使用javap进行确认。因此,鉴于:

public class Outer { public class Inner {} }

与:

public class Outer {}class Desugared {    private final Outer outer;    public Desugared(Outer outer) { this.outer = outer; }}

除了语法,这些内容相同:

Outer o = new Outer();o.new Outer.Inner();

是相同的:

Outer o = new Outer();new Desugared(o);

等。

事情是这样的:接口 没有field

鉴于他们没有, 他们不可能有这个隐藏的领域
。因此,它们不能是“非静态的”。因此,它们是隐式的“静态”(它们没有隐式可用的外部类实例),并且您不能更改它。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5490605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存