ho scritto questo metodi in Kotlin e analizzato il bytecode:Kotlin oggetto vs compagno-oggetto vs pacchetto ambito metodi
Situazione 1
class A {
object b {
fun doSomething() {}
}
}
Situazione 2
class A {
companion object b {
fun doSomething() {}
}
}
Situazione 3
fun doSomething() {}
Bytecode Risultato
- Situazione 1: classe
Test$asb
,public final doSomething()I
- Situazione 2: classe
Test$Companion
,public final doSomething()I
- Situazione 3: classe
TestKt
,public final static doSomething()I
Le mie domande sono:
Ho una classe enum e voglio restituire una istanza enum data una variabile enum, ad esempio findAmm
(enum(id, color))
. Come lo farei? Companion Object? oggetto?Sembra che l'unico modo per avere un metodo statico reale sia a livello di pacchetto, senza dichiarazione di classe. Ma diventa un po 'troppo globale. C'è un modo per accedervi tramite:
ClassName.staticMethod
, staticMethod essendo veramente statico.Fornire esempi significativi di metodi di dichiarazione del pacchetto, oggetto associato e oggetto.
Contesto. Ho fatto il codice di Kotlin e lo trovo fantastico. Ma a volte ho bisogno di prendere una decisione: per esempio, una pesante proprietà immutabile che in java dichiarerei definitiva statica, ma a Kotlin trovo difficile "trovare un equivalente".
Forse questo potrebbe essere di aiuto {http://stackoverflow.com/q/37794850/2804610} – EPadronU
In rega rds al tuo ultimo paragrafo, penso che questa risposta possa aiutarti {http://stackoverflow.com/a/37944990/2804610} – EPadronU