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 ni final val
aclarar el problema.