Ambiguous method call getClass()

julio 15, 2014
1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, promedio: 5,00 de 5)
Cargando…

En las últimas versiones de Android Studio, el IDE muestra un error en getClass que dice lo siguiente:

Ambiguous method call. Both
getClass () in Object and
getClass () in Object match.

Se debe a un bug de la plataforma IntelliJ.

La opción rápida sería haciendo un Casting de la llamada getClass():

((Object) this).getClass()

Sin embargo, no nos gustaba mucho esta opción ya que complica la lectura y además tendríamos que cambiar todo el código para evitar el error. Hay una solución mejor. Se trata de parchear el código SDK

Cuando te encuentres con el error getClass(), ve a la declaración del método (⌘B en Mac). Esto te llevará directamente a la ruta, algo así como $ANDROID_HOME/sources/android-20/java/lang/Object.java. Ahora , desde IntelliJ o desde Android Studio:

  1. Haz Object.java editable seleccionando File -> Make File Writable. Es posible que te pida hacer esto si intentas modificar automáticamente el archivo.
  2. Retire el comodín de la función:
    De

    public final native Class<?> getClass();

    a

    public final native Class getClass();

En las últimas versiones de android studio no te dejará modificar el código, puedes utilizar tu editor favorito para modificarlo.

Actualización

Si actualizas Android Studio, tendrás que volverlo a hacer, en mi caso tuve que volver a editar el archivo y guardar:

$ vi /Applications/Android\ Studio.app/sdk/sources/android-20/java/lang/Object.java 
:wq

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *