java变量是在内部类中访问的。需要被宣布为最终决定。但我不想宣布最终结果
我是Android编程的初学者,我声明了Boolean flag
,我想在内部类和return flag
中设置为true或false,但是Android studio说你应该声明final!!!我不想声明final,因为我在变量flag
中设置了true或false。
我的问题是,我该怎么做
你可以在下面搜索框中键入要查询的问题!
我是Android编程的初学者,我声明了Boolean flag
,我想在内部类和return flag
中设置为true或false,但是Android studio说你应该声明final!!!我不想声明final,因为我在变量flag
中设置了true或false。
我的问题是,我该怎么做
# 1 楼答案
回答你的字面问题:
内部类并不能真正访问外部变量(比如^{),Java只会创建访问的幻觉
从技术上讲,从实例化内部类的那一刻起,就会得到一个名为
flag
(由编译器以不可见的方式自动创建)的字段,其中包含flag
变量内容的副本。这类似于将flag
作为附加参数传递到构造函数中,并将其存储在同名的本地字段中但是,为了不破坏访问
flag
变量的幻觉,Java禁止您更改flag
,因为从技术上讲,只能更改局部字段,不能更改外部变量因此,这一部分的解决方案(其他人已经提到)是使用
boolean[] flagHolder = new boolean[1];
并使用flag[0]
进行通信但这对您的用例没有帮助
当调用
onResponse()
方法时(当接收到您的响应时),您的https()
方法很可能已经返回,因此它将无法看到后续响应可能产生的任何结果一些正式的评论:
请不要将代码显示为截图(这违反stackoverflow规则),而是将其作为文本复制到问题中。这使我们更容易进行自己的测试和改进
# 2 楼答案
在进行异步调用以检索该返回值的方法中,不能返回布尔值
而是在这个类中创建一个接口,并将该接口的内联实现作为方法签名的一部分,并在成功或错误时回调
以上是伪代码。不要复制和粘贴它。不要指出它不会编译lol。只需向您展示回调的实现:)。希望有帮助
# 3 楼答案
尝试将布尔值设置为全局,例如在方法外部声明它