Heim  >  Artikel  >  Java  >  Zusammenfassung des Kotlin-Syntaxlernens – Variablendefinition, Funktionserweiterung, Parcelable-Serialisierung

Zusammenfassung des Kotlin-Syntaxlernens – Variablendefinition, Funktionserweiterung, Parcelable-Serialisierung

零下一度
零下一度Original
2017-05-27 10:23:461944Durchsuche

Dieser Artikel stellt hauptsächlich das Lernen der Kotlin-Syntax vor – Variablendefinition, Funktionserweiterung, Parcelable-Serialisierung und andere kurz zusammengefasste verwandte Informationen. Freunde in Not können sich auf

Kotlin-Syntaxlernen – Variablendefinition und Funktionserweiterung beziehen , Parcelable-Serialisierung usw. Eine kurze Zusammenfassung

Auf der diesjährigen Google I/O 2017 Developer Conference gab Google bekannt, dass es Kotlin offiziell als offizielle First-Level-Entwicklungssprache für Android einführen wird Programme (erstklassige Sprache), als Android-Entwickler müssen Sie sich natürlich nach und nach mit dieser Sprache vertraut machen, und der erste Schritt besteht darin, die Grammatik zu lernen.

Zuvor müssen wir verstehen, wie man mit Kotlin eine Android-Anwendung schreibt. Für die Android Studio 3.0-Version können wir beim Erstellen des Projekts direkt die Option Kotlin einschließen aktivieren. Für Versionen vor 3.0 müssen wir das Kotlin-Plug-In installieren und Gradle manuell konfigurieren

Fügen Sie den folgenden Code unter dem Gradle der App hinzu

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

Fügen Sie den folgenden Code unter dem Gradle des Projekts hinzu

ext.kotlin_version = '1.1.2-3'

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

Kotlin definiert Variablen

  1. Es gibt zwei Arten von Variablendefinitionen in Kotlin, val und var, wobei val der endgültigen geänderten Variablen in Java (schreibgeschützt) entspricht, die im Allgemeinen a ist Konstante und var ist im Allgemeinen eine Variable.

  2. Die Variablendefinition von Kotlin unterstützt die Typinferenz während der Zuweisung, und alle Variablen werden standardmäßig auf „nicht null“ geändert. Sie müssen den Modifikator ? explizit nach dem Typ hinzufügen, bevor Sie ihn auf null zuweisen. .

  3. Wenn wir Code schreiben, sollten wir regelmäßig versuchen, Variablen so zu entwerfen, dass sie nicht nullbar sind, damit viele Probleme bei nachfolgenden Operationen an den Variablen reduziert werden.

Kotlin-Funktionserweiterung

Die spezifische Syntax ist fun + type.function (Parameter)

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

Kotlin Parcelable Serialisierung

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)
      }
    }
  }
}

Companion-Keyword-Interpretation

  1. Nicht wie Java oder C# , In Kotlin, Class verfügt über keine statischen Methoden. In den meisten Fällen wird empfohlen, Funktionen auf Paketebene anstelle statischer Methoden zu verwenden.

  2. Wenn Sie eine Funktion schreiben müssen, die auf das Innere der Klasse zugreifen kann, ohne sie zu instanziieren (z. B. eine Factory-Funktion), können Sie sie als Objekt mit echtem Namen innerhalb der Klasse deklarieren.

  3. Wenn Sie außerdem ein Begleitobjekt in der Klasse deklarieren, entsprechen alle Mitglieder im Objekt der externen Verwendung des statischen Modifikators in der Java/C#-Syntax. Diese Eigenschaften oder Funktionen können nur extern verwendet werden Der Zugriff erfolgt über den Klassennamen.

@JvmField-Annotation

  1. weist den Kotlin-Compiler an, keine Getter/Setter für diese Eigenschaft zu generieren und sie durch Exposed zu ersetzen als Feld.

  2. Wenn Sie eine Kotlin-Eigenschaft als Feld in Java verfügbar machen müssen, müssen Sie sie mit der Annotation @JvmField annotieren, damit das Feld die gleiche Sichtbarkeit wie die zugrunde liegende Eigenschaft hat.

Werkzeugklassen in Kotlin schreiben

In Java werden wir einige häufig verwendete Funktionen in Werkzeugklassen kapseln Funktionen gängiger Klassen wie String, Collection, IO usw. Die von uns geschriebenen Werkzeugklassenmethoden und -variablen werden statisch geschrieben. Da wir diese Methoden nur aufrufen möchten, ohne Attribute und Variablen in der Tool-Klasse einzubeziehen, ist keine Instanziierung erforderlich (neu). Da keine Instanziierung erforderlich ist, verwenden Sie einfach statisch.

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()
  }
}

Kotlin Activity Jump

Wir legen das Klickereignis in MainActivity fest, springen zu einer anderen Aktivität und übergeben gleichzeitig die Daten an diese

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()
  }
}

Erstellen Sie dann eine neue SecondActivity und stellen Sie eine statische Methode für den Aktivitätssprung bereit. Jeder muss wissen, dass der Vorteil darin besteht, dass der Aufrufer weiß, welche Parameter erforderlich sind, ohne einen Blick auf den Quellcode zu werfen. Wenn Sie nach Java schreiben, werden Sie feststellen, dass es kein statisches Schlüsselwort gibt! Keine Panik, Sie können dazu Begleitobjekte verwenden. Begleitobjekte sind Objekte, die den Deklarationszyklus dieser Klasse begleiten.

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)
    }
  }
}

Zusammenfassung

Das Obige ist nur eine kurze Einführung in einige grammatikalische Merkmale von Kotlin, die als Einführung in diese neue Sprache gilt und einige Ängste beseitigt Tatsächlich verfügt Kotlin über viele neue Funktionen, die während der Entwicklung langsam verdaut und verstanden werden müssen.

[Verwandte Empfehlungen]

1. JavaScript-Implementierungsmethode zur Bestimmung des Variablentyps basierend auf einer benutzerdefinierten Funktion

2. Details in Java um Objekte zu erstellen

3.

Eine kurze Einführung in mehrere Java-Objekte

Das obige ist der detaillierte Inhalt vonZusammenfassung des Kotlin-Syntaxlernens – Variablendefinition, Funktionserweiterung, Parcelable-Serialisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn