Dado este pedazo de Kotlin:
object OldTownRoad {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
y esta clase de Java:
public class Scrap {
@Named(OldTownRoad.COWBOY_HATS)
public void lilNasXrefs() {
System.out.println(OldTownRoad.COWBOY_HATS);
System.out.println(OldTownRoad.WRANGLER);
}
}
El compilador está contento con las println()
llamadas. Se queja del uso de COWBOY_HATS
en la @Named
anotación, diciendo "El valor del atributo debe ser constante", como se ve en esta captura de pantalla de Android Studio 3.5.3:
Lo intenté @JvmStatic
y @JvmField
en esas const val
declaraciones, pero el compilador se queja de que ninguno de ellos es válido para las const
propiedades.
Obtengo los mismos resultados de a companion object
:
class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
¿Hay alguna otra sintaxis constante de Kotlin que funcione cuando se hace referencia desde una anotación Java?
final const val
da como resultado "final es un modificador redundante". Ni eso nifinal val
aclarar el problema.Respuestas:
Olvidé ver si esto era un error de Android Studio. : facepalm:
Resulta que si ejecuta el código, funciona bien. Android Studio 3.5.3 parece quejarse innecesariamente.
Presenté un informe de error para intentar obtener la confirmación del problema.
¡Muchas gracias a @natario, cuyo comentario me hizo darme cuenta de que esto podría ser un problema IDE!
fuente