Maison >Java >javaDidacticiel >Résumé de l'apprentissage de la syntaxe Kotlin : définition de variables, extension de fonctions, sérialisation Parcelable

Résumé de l'apprentissage de la syntaxe Kotlin : définition de variables, extension de fonctions, sérialisation Parcelable

零下一度
零下一度original
2017-05-27 10:23:461965parcourir

Cet article présente principalement l'apprentissage de la syntaxe Kotlin - définition des variables, extension des fonctions, sérialisation Parcelable et d'autres informations connexes brièvement résumées. Les amis dans le besoin peuvent se référer à

Apprentissage de la syntaxe Kotlin - définition des variables, extension des fonctions. , Sérialisation Parcelable, etc. Un bref résumé

Lors de la conférence des développeurs Google I/O 2017 de cette année, Google a annoncé qu'il inclurait officiellement Kotlin comme langage de développement officiel de premier niveau pour Android programmes. (Langage de première classe), en tant que développeur Android, vous devez bien sûr vous familiariser progressivement avec ce langage, et la première étape consiste à apprendre la grammaire.

Avant cela, nous devons comprendre comment utiliser Kotlin pour écrire une application Android. Pour la version Android Studio 3.0, nous pouvons directement vérifier l'option de support Inclure Kotlin lors de la création du projet ; pour les versions antérieures à 3.0, nous devons installer le plug-in Kotlin et configurer manuellement gradle. La méthode est la suivante.

Ajoutez le code suivant sous le grade de l'application

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

Ajoutez le code suivant sous le grade du projet

ext.kotlin_version = '1.1.2-3'

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

Kotlin définit des variables

  1. Il existe deux types de définitions de variables dans Kotlin, val et var, où val est équivalent à la variable finale modifiée en Java (lecture seule), qui est généralement un constante, et var est généralement une variable.

  2. La définition de variable de Kotlin prend en charge l'inférence de type lors de l'affectation, et toutes les variables sont modifiées par défaut pour "non nulles". Vous devez explicitement ajouter le modificateur ? après le type avant de l'attribuer à null. .

  3. Lorsque nous écrivons du code, nous devons faire de notre mieux pour concevoir habituellement les variables de manière à ce qu'elles ne soient pas nullables, afin que de nombreux problèmes soient réduits lors des opérations ultérieures sur les variables.

Extension de fonction Kotlin

La syntaxe spécifique est fun + type.function (paramètre)

 fun Context.toast(message: String, length: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(this, message, length).show()
  }

Sérialisation Kotlin Parcelable

package com.john.kotlinstudy

import android.os.Parcel
import android.os.Parcelable

/**
 * Java Bean 数据实体类
 * Created by john on 17-5-24.
 */

data class UserBean(var name: String, var id: String) : Parcelable {

  constructor(source: Parcel) : this(source.readString(), source.readString())

  override fun describeContents(): Int {
    return 0
  }

  override fun writeToParcel(dest: Parcel, flags: Int) {
    dest.writeString(this.name)
    dest.writeString(this.id)
  }

  companion object {

    @JvmField val CREATOR: Parcelable.Creator<UserBean> = object : Parcelable.Creator<UserBean> {
      override fun createFromParcel(source: Parcel): UserBean {
        return UserBean(source)
      }

      override fun newArray(size: Int): Array<UserBean?> {
        return arrayOfNulls(size)
      }
    }
  }
}

Interprétation des mots clés compagnons

  1. Pas comme Java ou C# , Dans Kotlin, Class n'a pas de méthodes statiques. Dans la plupart des cas, il est recommandé d'utiliser des fonctions au niveau du package au lieu de méthodes statiques.

  2. Si vous devez écrire une fonction qui peut accéder à l'intérieur de la classe sans l'instancier (comme une fonction d'usine), vous pouvez la déclarer comme un objet de nom réel dans la classe.

  3. De plus, si vous déclarez un objet compagnon dans Class, tous les membres de l'objet seront équivalents à l'utilisation du modificateur static dans la syntaxe Java/C#, en externe. Ces propriétés ou fonctions ne peuvent être accessible via le nom de la classe.

L'annotation @JvmField

  1. indique au compilateur Kotlin de ne pas générer de getters/setters pour cette propriété et de la remplacer Exposée comme un champ.

  2. Si vous devez exposer une propriété Kotlin en tant que champ en Java, vous devez l'annoter avec l'annotation @JvmField et le champ aura la même visibilité que la propriété sous-jacente.

Écrire des classes d'outils dans Kotlin

En Java, nous encapsulerons certaines fonctions couramment utilisées dans des classes d'outils. Les classes d'outils sont en fait des extensions du. fonctions de classes communes telles que String, Collection, IO, etc. Les méthodes et variables de classe d’outils que nous écrivons seront écrites de manière statique. Parce que nous voulons simplement appeler ces méthodes sans impliquer d'attributs ni de variables dans la classe d'outils, il n'est donc pas nécessaire d'instancier (nouveau). Puisqu'il n'est pas nécessaire d'instancier, utilisez simplement static.

package com.john.kotlinstudy

import android.content.Context
import android.widget.Toast

/**
 * Toast工具类
 * Created by john on 17-5-24.
 */
object ToastUtils {

  fun toast(context: Context, message: String) {
    Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
  }
}

Saut d'activité Kotlin

Nous définissons l'événement de clic dans MainActivity, passons à une autre activité et lui transmettons les données en même temps

package com.john.kotlinstudy

import android.content.Context
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    test_tv.text = "hello kotlin"
    test_tv.setOnClickListener {
      ToastUtils.toast(this, "hello kotlin")
      val user = UserBean("zhang", "001")
      user.id = "100"
      SecondActivity.navigateTo(this, user)
    }
  }

  fun Context.toast(message: String, length: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(this, message, length).show()
  }
}

Créez ensuite une nouvelle SecondActivity et fournissez une méthode statique pour le saut d'activité. Tout le monde doit savoir que l'avantage de procéder ainsi est que l'appelant sait quels paramètres sont requis sans regarder le code source. Si vous écrivez selon Java, vous constaterez qu'il n'y a pas de mot-clé statique ! Pas de panique, vous pouvez utiliser des objets compagnons pour y parvenir. Les objets compagnons sont des objets qui accompagnent le cycle de déclaration de cette classe.

package com.john.kotlinstudy

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_second.*

/**
 * 跳转Activity测试类
 * Created by john on 17-5-24.
 */
class SecondActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_second)
    val user = intent.getParcelableExtra<UserBean>(EXTRA_KEY_USER)
    user_name_tv.text = user.name
    ToastUtils.toast(this, user.id)
  }

  //创建一个伴生对象
  companion object {
    //extra的key
    val EXTRA_KEY_USER = "extra.user"

    fun navigateTo(context: Context, user: UserBean) {
      val intent = Intent(context, SecondActivity::class.java)
      intent.putExtra(EXTRA_KEY_USER, user)
      context.startActivity(intent)
    }
  }
}

Résumé

Ce qui précède n'est qu'une brève introduction à certaines caractéristiques grammaticales de kotlin, qui est considérée comme une introduction. Elle peut éliminer une certaine méconnaissance et peur de. ce nouveau langage. En fait, Kotlin a de nombreuses nouvelles fonctionnalités qui doivent être lentement digérées et comprises au cours du développement.

【Recommandations associées】

1. Méthode d'implémentation JavaScript pour déterminer le type de variable en fonction de la fonction personnalisée

2 Détails en Java Comment. pour créer des objets

3 Une brève introduction à plusieurs objets Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn