有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    回答你的字面问题:

    内部类并不能真正访问外部变量(比如^{),Java只会创建访问的幻觉

    从技术上讲,从实例化内部类的那一刻起,就会得到一个名为flag(由编译器以不可见的方式自动创建)的字段,其中包含flag变量内容的副本。这类似于将flag作为附加参数传递到构造函数中,并将其存储在同名的本地字段中

    但是,为了不破坏访问flag变量的幻觉,Java禁止您更改flag,因为从技术上讲,只能更改局部字段,不能更改外部变量

    因此,这一部分的解决方案(其他人已经提到)是使用boolean[] flagHolder = new boolean[1];并使用flag[0]进行通信

    但这对您的用例没有帮助

    当调用onResponse()方法时(当接收到您的响应时),您的https()方法很可能已经返回,因此它将无法看到后续响应可能产生的任何结果

    一些正式的评论:

    请不要将代码显示为截图(这违反stackoverflow规则),而是将其作为文本复制到问题中。这使我们更容易进行自己的测试和改进

  2. # 2 楼答案

    在进行异步调用以检索该返回值的方法中,不能返回布尔值

    而是在这个类中创建一个接口,并将该接口的内联实现作为方法签名的一部分,并在成功或错误时回调

    public class yourHTTPClass{
        public void yourMethod(myCallbacks callback){
             doAsyncCall(){
                  onSuccess(){
                       callback.onSuccess();
                  }
             }
        }
        public interface myCallbacks{
             onSuccess();
             onError();
        }
    }
    
    public class OtherClass{
        yourHTTPClassInstance.yourMethod(new myCallbacks(){
             @Override
             public void onSuccess(){
    
             }
             @Override
             public void onError(){
    
             }
        }
    }
    

    以上是伪代码。不要复制和粘贴它。不要指出它不会编译lol。只需向您展示回调的实现:)。希望有帮助

  3. # 3 楼答案

    尝试将布尔值设置为全局,例如在方法外部声明它