Curso de enseñanza de aprendizaje de novatos de Kotlin

Código de interfaz original:
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 !!.

2. No es necesario agregar al final;

Comparación de métodos integrales.
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 ActivityManager
1. 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()方法


后续还有偶











发布了20 篇原创文章 · 获赞 2 · 访问量 1万+

Supongo que te gusta

Origin blog.csdn.net/qq_28335347/article/details/79611432
Recomendado
Clasificación