La clase interna anónima llama a los parámetros del método, el objeto del parámetro del método ha cambiado, pero la referencia de la clase interna anónima no ha cambiado

La clase interna anónima llama a los parámetros del método, el objeto del parámetro del método ha cambiado, pero la referencia de la clase interna anónima no ha cambiado

public void startServer(final LanServerBean.Builder builder){
        Log.i(TAG, "quqx_startServer: builder="+builder.hashCode());
        HttpServerRequestCallback callback = new HttpServerRequestCallback() {
            @Override
            public void onRequest(AsyncHttpServerRequest request, AsyncHttpServerResponse response) {
                Log.e(TAG, "quqx_onRequest: builer=" + builder.hashCode());
                ......
            }
        };
  
        mHttpServer.get("/", callback);
        ......
    }

Problema: como en el código anterior, se llama al método startServer () por primera vez y los dos registros muestran que los objetos del constructor son los mismos. Luego, cuando se llama al método, la impresión muestra que los objetos del constructor son inconsistentes. La impresión en quqx_onRequest es siempre el primer objeto referenciado .

Análisis: la devolución de llamada es la clase de implementación de la interfaz, que se encuentra en mHttpServer. Cuando mHttpServer no se modifica, el contenido de la devolución de llamada no cambiará.

Solución:

public void startServer(final LanServerBean.Builder builder){
            Log.i(TAG, "quqx_startServer: builder="+builder.hashCode());
            HttpServerRequestCallback callback = new HttpServerRequestCallback() {
                @Override
                public void onRequest(AsyncHttpServerRequest request, AsyncHttpServerResponse response) {
                    Log.e(TAG, "quqx_onRequest: builer=" + builder.hashCode());
                    ......
                }
            };
      
        	mHttpServer = new AsyncHttpServer();  //新new一个对象解决问题
            mHttpServer.get("/", callback);
            ......
        }

Supongo que te gusta

Origin blog.csdn.net/weixin_41820878/article/details/101075288
Recomendado
Clasificación