ホームページ > Java > &#&チュートリアル > Kotlin 構文学習のまとめ – 変数定義、関数拡張、Parcelable シリアル化

Kotlin 構文学習のまとめ – 変数定義、関数拡張、Parcelable シリアル化

零下一度
リリース: 2017-05-27 10:23:46
オリジナル
1986 人が閲覧しました

この記事では、主に Kotlin 構文の学習変数定義、関数拡張、Parcelable シリアル化、およびその他の簡単にまとめられた関連資料を紹介します。必要な友人は参照してください

Kotlin 構文学習変数定義、関数拡張、Parcelable シリアル化など。簡単な概要

今年の Google I/O 2017 開発者カンファレンスで、Google は Android 開発者として、Android プログラムの公式ファーストクラス開発言語 (ファーストクラス言語) に Kotlin を正式に組み込んだと発表しました。もちろん、言語を学ぶための最初のステップは、文法から始めることです。

その前に、Kotlin を使用して Android アプリケーションを作成する方法を理解する必要があります。 Android Studio 3.0 バージョンの場合、プロジェクトの作成時に Include Kotlin サポート オプションを直接チェックできます。3.0 より前のバージョンの場合、Kotlin プラグインをインストールし、手動で Gradle を設定する必要があります。方法は次のとおりです。 app プロジェクトのgradle配下に以下のコードを追加

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
ログイン後にコピー

プロジェクトのgradle配下に以下のコードを追加

ext.kotlin_version = '1.1.2-3'

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
ログイン後にコピー

Kotlinは変数を定義します

    kotlinの変数定義にはvalとvarの2種類があります。ここで、val は Java の最終変更に相当します。 変数 (読み取り専用) は通常、定数であり、var は通常、変数です。
  1. Kotlin の変数定義は代入中の型推論をサポートしており、値を null に割り当てるには、デフォルトですべての変数が "null 不可" に変更されます。
  2. コードを書くときは、習慣的に変数が null 値を許容しないように設計するように最善を尽くして、後続の変数操作で多くの問題が軽減されるようにする必要があります。
Kotlin関数拡張

具体的な構文はfun + type.function(parameter)

 fun Context.toast(message: String, length: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(this, message, length).show()
  }
ログイン後にコピー

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)
      }
    }
  }
}
ログイン後にコピー

コンパニオンキーワード解釈

    とはJava または
  1. C#

    、 Kotlin では、クラスに静的メソッドがありません。ほとんどの場合、静的メソッドの代わりにパッケージレベルの関数を使用することをお勧めします。

  2. インスタンス化せずにクラスの内部にアクセスできる関数(ファクトリー関数など)を作成する必要がある場合は、クラス内で実名オブジェクトとして宣言できます。
  3. さらに、クラスでコンパニオン オブジェクトを宣言すると、オブジェクト内のすべてのメンバーは、Java/C# 構文での static 修飾子を使用することと同じになり、クラス名または関数を介して外部からのみアクセスできます。アクセス。
@JvmField アノテーション

    は、このプロパティのゲッター/セッターを生成せず、フィールドとして公開しないように Kotlin コンパイラーに指示します。
  1. Kotlin プロパティを Java のフィールドとして公開する必要がある場合は、@JvmField アノテーションを使用してアノテーションを付ける必要があります。そうすれば、フィールドは基になるプロパティと同じ可視性を持つようになります。
Kotlin でのツール クラスの作成

Java では、ツール クラスは、実際には String、Collection、IO などの一般的なクラスの関数の拡張です。私たちが記述するツール クラスのメソッドと変数は静的に記述されます。ツール クラスの属性や変数を含まずにこれらのメソッドを呼び出すだけなので、インスタンス化する必要はありません (new) インスタンス化する必要がないため、静的を使用するだけです。

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アクティビティジャンプ

MainActivityにクリックイベントを設定し、別のアクティビティにジャンプしてデータを渡します

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()
  }
}
ログイン後にコピー

次に、SecondActivityを作成し、アクティビティジャンプの静的メソッドを提供します。これを行う利点は、呼び出し元がソース コードを見なくてもどのパラメータが必要かを知ることができることであることは、誰もが知っているはずです。 java に従って書くと、static キーワードがないことがわかります。パニックにならないでください。コンパニオン オブジェクトを使用してこれを実現できます。コンパニオン オブジェクトは、このクラスの宣言サイクルに付随するオブジェクトです。

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)
    }
  }
}
ログイン後にコピー

概要

上記は、kotlin のいくつかの文法機能の簡単な紹介であり、この新しい言語に慣れていないという不安を解消するための入門とみなすことができます。実際、kotlin には多くの新機能があります。開発中はまだゆっくりと消化して理解する必要があります。

【関連する推奨事項】

1.

JavaScript を使用してカスタム関数に基づいて変数の型を決定する方法

2.

Java でオブジェクトを作成する方法の詳細

3. いくつかの Java オブジェクトの簡単な紹介

以上がKotlin 構文学習のまとめ – 変数定義、関数拡張、Parcelable シリアル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート