2012-09-26 20 views
5

ahora consigo algunos registros, como a continuación (log-1)un ClassCastException acerca clase anónima (Java)

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to ClassA$1 
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1010) 
... 


línea 1010

final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) obj.method();//line 1010 


creo, el registro debe ser como este (log-2)

java.lang.ClassCastException: ClassA$1 cannot be cast to android.widget.LinearLayout$LayoutParams 

I wannna sé por qué obtengo log-1, ¿está bien?
Si log-1 es correcto, ¿cómo puedo escribir código para crear una excepción como esa?

ps: Sé que ClassA $ 1 es una clase anónima.
ps: me sale este registro en una prueba de mono, y es vrey duro para reaparecer

alguien me diga:

MyInterface my = ClassA$1;//$1 is an anonymous class which implements MyInterface 
my.getClass().cast(lp); 

continuación, el registro será como log-1
pero ¿por qué el registro hizo no señalar la línea del método "cast"?
y reviso la carpeta frameworks/base/core, nadie llama al método "? Java.lang.Class.cast (Object obj)"
¿Alguna idea?

+0

pd: obtengo este registro en una prueba de mono, y es muy difícil volver a aparecer –

Respuesta

2

No puedo pensar en una explicación lógica para ese comportamiento. Si los hechos son los que usted informa, entonces estoy de acuerdo en que el mensaje de error es incorrecto.

¿Cuáles son las alternativas?

  • Puede estar mal leer los archivos de registro.
  • Podría estar buscando la versión incorrecta del código fuente.
  • Podría haber encontrado un error ... aunque parece poco probable para algo tan fundamental como este. (En teoría, el error podría ser un mensaje de error incorrecto proveniente de la máquina virtual, un número de línea incorrecto en la pila, o incluso un error del compilador que hace que haga un molde de tipo incorrecto.)
  • Incluso es posible que la excepción stacktrace es falsa ... aunque esa explicación bordea la paranoia.

Mis sugerencias son:

  • intente ejecutar el código en un depurador y la versión única a través de esa sección del código para confirmar su creencia acerca de la causa y el origen de la excepción.
  • Cree un SSCE para este comportamiento y vea si otras personas pueden reproducirlo.
+0

es difícil volver a aparecer it.i obtener este error en una prueba de mono –

Cuestiones relacionadas