public @ interface ActivityScoped { }
Código de interfaz de Kotlin:
clase de anotación ActivityScoped
Método de implementación original:
@Override void inject (instancia de DaggerApplication) ;
Aplicación AppComponent.Builder (aplicación de aplicación) ;Método de implementación de Kotlin:
anular la inyección divertida (instancia: DaggerApplication)
aplicación divertida (aplicación: Aplicación): AppComponent.Builder
1. Uso potente: conexión de colon
2.void reemplazado por diversión
Controles definidos originalmente:
ImageView mPlayingUserAvatar ;
Control de definición de Kotlin:
var interna mPlayingUserAvatar : ImageView? = nulo
1. interno significa dominio de definición
2. Todas las variables necesitan agregar var
3. Variables de clase poderosas: clase
4.? El signo de interrogación indica si está vacío.
El código original define estática:
privado estático final int CACHE_STRATEGY_FAST = 1 ;
Kotlin define estática:
objeto complementario { var mHandler : ¿ controlador ? = null privado val CACHE_STRATEGY_FAST = 1 // 极速 privado val CACHE_STRATEGY_SMOOTH = 2 // 流畅 privado val CACHE_STRATEGY_AUTO = 3 // 自动 privado val CACHE_TIME_FAST = 1.0f privado val CACHE_TIME_SMOOTH = 5.0f
}
1. El indicador estático estático se agrega al objeto complementario para singleton
2. Todas las variables que definen tipos de variables se reemplazan con var
Método de poder original:
Mapa privado <String , String> mUrlMap = new HashMap <> () ;
Método de resistencia de Kotlin:
private val mUrlMap = HashMap <Cadena , Cadena> ()
1. La variable directa es igual a la que se va a fortalecer.
Variables de inicialización originales:
private int mCacheStrategy ; Private String mPlayUrl ;
Variables de inicialización de Kotlin:
private var mCacheStrategy : Int = 0 private var mPlayUrl : String? = nulo
1. Agregue var al frente
2. ¿Necesita agregar un tipo de cadena? Es bueno juzgar si está vacío y asignar nulo
Originalmente escriba un método con un valor de retorno:
public int getDeviceId () { return mEntity .getId () ; }
Kotlin escribe un método con un valor de retorno:
val deviceId : Int get () = mEntity !!. carné de identidad
1.val para indicar nuevo. Es necesario agregar variables y métodos.
2. El método del tipo get elimina la minúscula de la primera letra del get como nombre del método y le da dos puntos al nombre del método y el tipo de valor de retorno
3.get () = Agregar los datos que se devolverán después
4. Si necesita agregar lógica para obtener (), necesita obtener () {Agregar aquí y luego devolverlo con return}
5. Al escribir métodos, el vacío público puede ser reemplazado por diversión
6. Todos los tipos de valores se pueden definir con var al asignar
7.! ! ¡Significa que la primera carga puede estar vacía, y debe agregarla cuando llame a los métodos dentro de la clase instanciada!
El interruptor original utiliza un juicio de múltiples condiciones.
switch ( acción ) { case AppConstant. ARRIBA : mGamePresenter .up () ; rotura; caso AppConstant. ABAJO : mGamePresenter .down () ; rotura; }Kotlin lo reemplazó con cuando:
when (action) { AppConstant. UP -> mGamePresenter !!. Up () AppConstant. ABAJO -> mGamePresenter !!. Down () }
1. !! significa que la primera carga puede estar vacía, y debe agregarla cuando llame a los métodos dentro de la clase instanciada !!.
public void onFinish () { CountDownTimer timer = mTimerMap .get ( acción ) ; if (timer! = null ) { timer.cancel () ; } }
Kotlin:
fun onFinish () { val timer = mTimerMap [action] timer? .cancel () }
1. el vacío público puede ser reemplazado por diversión
2. Cuando se necesita una asignación, var se puede convertir directamente a la correspondiente según el tipo de asignación posterior, por lo que todas las variables asignadas se pueden definir con var
3.? El símbolo del signo de interrogación corresponde a si el temporizador está vacío
4. El método get se puede cambiar a corchetes en lugar de matrices
La necesidad original de forzar el código de asignación del objeto:
ActivityManager am = (ActivityManager) getSystemService ( ACTIVITY_SERVICE ) ;
Kotlin necesita forzar el código de asignación del objeto:
val am = getSystemService (Contexto. ACTIVITY_SERVICE ) como ActivityManager1. Cambio forzado para agregar como seguido por el tipo a forzar
Hilo de inicio original:
new Thread(new Runnable() { @Override public void run() { while (showDanmaku) { int time = new Random().nextInt(300); try { Thread.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start();
Kotlin开启线程:
Thread(Runnable { while (showDanmaku) { val time = Random().nextInt(300) try { Thread.sleep(time.toLong()) } catch (e: InterruptedException) { e.printStackTrace() } } }).start()
1.不需要实例化new
2.不需要实现run()方法
后续还有偶