【问题标题】:Anonymous Class return to parent method匿名类返回父方法
【发布时间】:2019-09-05 05:13:22
【问题描述】:

是否可以让匿名内部类返回包含它的方法的值?例如,我想在匿名内部类something() 中进行一些计算,并让doStuff() 返回该值。

private int doStuff(){

    Foo foo = new Foo(new Bar.Example() {
            @Override
            public void something() {
                ...
                //return int for doStuff()
            }
    });

}

【问题讨论】:

  • 您可以简单地调用匿名类的方法,例如new Bar.DoStuff() { ... }.something()。但是请花一些精力使您的示例代码有意义,例如缺少new,从void 方法返回一个int,明确你将要对foo 做什么以从中获取值...
  • 感谢您的回答!我修复了丢失的new,但return 1 是我试图表明我希望doStuff 返回 1,没有 void 方法返回 1,但是我确实整理了它。

标签: java return return-value anonymous-methods anonymous-inner-class


【解决方案1】:

doStuff() 方法中创建一个Instance final 变量,并在匿名类中赋值。

【讨论】:

  • 您不能重新分配最终的“变量”。你的意思是最终参考吗?
  • 是的,我的意思是在外部创建一个像 int final value; 这样的最终引用变量,并在像 value=1; 这样的匿名类中分配值
  • 那不会编译。试试看,自己看看。就像我之前说的,您不能重新分配最终变量。此外,您的评论模棱两可,您说的是引用变量,但您使用的是原语。
猜你喜欢
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2010-11-22
相关资源
最近更新 更多