> Java > java지도 시간 > 본문

Kotlin 구문 학습 요약 - 변수 정의, 함수 확장, Parcelable 직렬화

零下一度
풀어 주다: 2017-05-27 10:23:46
원래의
1959명이 탐색했습니다.

이 글에서는 주로 Kotlin 구문 학습 - 변수 정의, 함수 확장, Parcelable 직렬화 및 기타 간략하게 관련 정보를 소개합니다. 필요한 친구들은

Kotlin 구문 학습 - 변수 정의, 함수 확장을 참고하세요. , Parcelable 직렬화 등 간략한 요약

올해 Google I/O 2017 개발자 컨퍼런스에서 Google은 Android의 공식 1단계 개발 언어로 Kotlin을 공식 포함하겠다고 발표했습니다. 프로그램.(일류 언어) Android 개발자로서 당연히 이 언어에 익숙해져야 하며, 첫 번째 단계는 문법을 배우는 것입니다.

이전에 Kotlin을 사용하여 Android 애플리케이션을 작성하는 방법을 이해해야 합니다. Android Studio 3.0 버전의 경우 프로젝트 생성 시 Include Kotlin 지원 옵션을 직접 확인할 수 있으며, 3.0 이전 버전의 경우 Kotlin 플러그인을 설치하고 Gradle을 수동으로 구성해야 합니다.

앱 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에서 변수 정의

  1. kotlin에는 val과 var라는 두 가지 유형의 변수 정의가 있습니다. 여기서 val은 Java(읽기 전용)에서 최종 수정된 변수에 해당하며 일반적으로 상수이고 var는 일반적으로 변수입니다.

  2. Kotlin의 변수 정의는 할당 중 유형 추론을 지원하며 기본적으로 모든 변수는 "not null"로 수정됩니다. null에 값을 할당하려면 유형 뒤에 ? 수정자를 명시적으로 추가해야 합니다. .

  3. 코드를 작성할 때 변수에 대한 후속 작업에서 많은 문제를 줄일 수 있도록 습관적으로 변수를 null이 불가능하도록 설계해야 합니다.

Kotlin 함수 확장

구체 구문은 fun + type.function(매개변수)

 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)
      }
    }
  }
}
로그인 후 복사

동반 키워드 해석

  1. 은 Kotlin의 Java 또는 C#과 다릅니다. 클래스 대부분의 경우 정적 메서드 대신 패키지 수준 함수를 사용하는 것이 좋습니다.

  2. 클래스를 인스턴스화하지 않고 클래스 내부에 액세스할 수 있는 함수(예: 팩토리 함수)를 작성해야 하는 경우 클래스 내에서 이를 실제 이름 개체로 선언할 수 있습니다.

  3. 또한 Class에서 동반 개체를 선언하면 개체의 모든 멤버는 외부적으로 Java/C# 구문의 static 한정자를 사용하는 것과 동일합니다. 이러한 속성이나 함수는 클래스 이름을 통해 액세스할 수 있습니다.

@JvmField 주석

  1. 은 Kotlin 컴파일러에게 이 속성에 대한 getter/setter를 생성하고 이를 바꾸지 않도록 지시합니다. 필드로.

  2. Kotlin 속성을 Java의 필드로 노출해야 하는 경우 @JvmField 주석을 달아야 하며 필드는 기본 속성과 동일한 가시성을 갖게 됩니다.

Kotlin으로 도구 클래스 작성

Java에서는 일반적으로 사용되는 일부 기능을 도구 클래스로 캡슐화합니다. String, Collection, IO 등 일반적인 클래스의 함수 우리가 작성하는 도구 클래스 메서드와 변수는 정적으로 작성됩니다. 도구 클래스의 속성과 변수를 포함하지 않고 이러한 메서드를 호출하기를 원하므로 인스턴스화할 필요가 없습니다(새 항목). 인스턴스화할 필요가 없으므로 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()
  }
}
로그인 후 복사

Kotlin Activity Jump

MainActivity에서 클릭 이벤트를 설정하고 다른 Activity로 점프한 다음 데이터를

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 키워드가 없다는 걸 알 수 있어요! 당황하지 마십시오. 이를 달성하기 위해 동반 객체를 사용할 수 있습니다. 동반 객체는 이 클래스의 선언 주기와 함께 제공되는 객체입니다.

【관련 권장 사항】1.

커스텀 함수를 기반으로 변수 유형을 결정하는 JavaScript 구현 방법

Java의 세부 사항 객체 생성

3.

여러 Java 객체에 대한 간략한 소개

위 내용은 Kotlin 구문 학습 요약 - 변수 정의, 함수 확장, Parcelable 직렬화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿