Firebase 回调接口需要声明为 final 吗?

Firebase Callback Interface needs to be declared final?

以下是代码,其中一行 android studio 要求我声明为最终代码

      public void getFullName(GetFullNameCallback getFullNameCallback) { usersRef.child(mAuth.getUid()).child("fN").addListenerForSingleValueEvent(new ValueEventListener() {
          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {

            getFullNameCallback.onCallback(dataSnapshot.getValue().toString());
          }

          @Override
          public void onCancelled(@NonNull DatabaseError databaseError) {}
        });
      }


      private interface GetFullNameCallback {
        void onCallback(String fullName);
      }

onDataChange中的getFullNameCallback.onCallback()处,它有红色下划线,因为它说getFullNameCallback应该被声明为final,但根据,这很好??

Why are only final variables accessible in anonymous class? 中所述,在匿名 class.

中只能访问最终变量

在您的代码中,您收到 getFullNameCallback 作为 getFullName 方法中的参数(它不是创建 ValueEventListener 的新实例的代码中的局部变量)。

此外你使用它 (getFullNameCallback) 匿名 class ValueEventListener 中,所以,getFullNameCallback 必须是 final 以便使用(再次,在链接 post 中解释了原因)。