为了账号安全,请及时绑定邮箱和手机立即绑定

匿名类访问局部变量

匿名类访问局部变量

莫回无 2021-09-15 10:19:15
如果您查看下面的代码,您会看到我在方法 M() 中声明了 int x = 0。然后我在所述方法中声明一个匿名类并声明 int z = x。我的问题是我虽然这是不允许的,因为 x 是在匿名类存在的封装方法中定义的,而不是常量。也许我误解了一些东西。有人可以帮助清除我的困惑吗?public class SomeClass {public void someMethod(Super pObj) {}}public class Super {    public Super() {}    public void aMethod() {}}public class SubClass extends Super {    public void M() {        SomeClass someObject = new SomeClass();        int x = 0;        someObject.someMethod(new Super() {            int z = x;              @Override public void aMethod() {}        });    }}
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

x变量实际上是final,因此可以在匿名类中使用(从 Java SE 8 开始)。

有关其他信息,您可以查看此线程


查看完整回答
反对 回复 2021-09-15
?
慕森卡

TA贡献1806条经验 获得超8个赞

我还使用了解决方法女巫包装器最终对象。这样,对象实际上是最终的,但您可以更改其中的值。

final Counter counter = new Counter() ; 在匿名课程中,您可以执行以下操作:计数器。增加值() ;


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信