SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【最新Kotlinアップデート解説】バージョン1.1からの変更点総まとめ

Kotlin最新アップデートまとめ ──連載概要とwhen・lateinit・アンダースコアの新しい使い方など

【最新Kotlinアップデート解説】バージョン1.1からの変更点総まとめ 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

その他のアップデート

 最後に、細かいアップデートを落穂拾い的に3個、バージョン順に紹介します。

型エイリアス

 バージョン1.1で型エイリアスが導入されました。これは、リスト12のコードのように、typealiasキーワードを利用します。リスト12のように、関数型に名前をつける際に便利です。

[リスト12]型エイリアスのサンプル
typealias BMICallback = (String, Double, Double) -> Unit

値列挙の最後にカンマを残すことが可能

 バージョン1.4で、値を列挙する際の最後にカンマを残しておけるようにアップデートされています。このサンプルは、実はすでに登場しており、リスト10のtaroの最後のageデータのコードが該当します。35の次にカンマが記述されています。これが、バージョン1.3まではエラーとなりましたが、1.4でエラーとならないようにアップデートされています。

ノンナル型定義

 バージョン1.7で「& Any」という型指定の構文が導入されました。この構文は、Kotlinのみでコーディングしている場合には不要なものですが、Android開発のようにJavaの@NotNullアノテーションに対応するために導入されたものです。

 例えば、リスト13のようなJavaでのインターフェース定義があるとします。@NotNullアノテーションが含まれているのが特徴です。

[リスト13]@NotNullアノテーションが含まれたJavaのインターフェース定義の例
public interface DataProcess<T> {
  void init(T baseData);
  @NotNull
  T doProcess(@NotNull T processParam);
}

 このインターフェースであるDataProcessの子インターフェースをKotlinで定義しようとします。すると、リスト14のコードとなります。

[リスト14]DataProcessの子インターフェース定義の例
interface PersonalDataProcess<E> : DataProcess<E> {
  override fun init(baseData: E)
  override fun doProcess(processParam: E & Any): E & Any
  fun replay()
}

 リスト14でのポイントは、doProcess()における引数と戻り値の型指定です。リスト13のDataProcessのinit()の引数の型と、doProcess()の引数の型と戻り値の型は、全て同じT型です。ただし、init()の引数はナラブルである一方で、doProcess()の引数と戻り値は、@NotNullアノテーションが付与されているため、ノンナルです。

 これをKotlinで表現する場合、リスト14のようになります。オーバーライドしたinit()の引数の型はEとしています。このEはナラブルとなり得るため、そのままdoProcess()の引数と戻り値の型として記述するわけにはいきません。そのために用意された記述が、「& Any」です。リスト14のように「E & Any」とすることで、ノンナルのEを表すことができます。

まとめ

 Kotlinのバージョン2.0までに導入された新機能をテーマごとに紹介する本連載の第1回目は、いかがでしたでしょうか。

 今回は連載の概要と、テーマとしては1回分には満たない分量の詰め合わせとして、whenのアップデート、lateinitのアップデート、新しいアンダースコア演算子、そしてその他のアップデートに関して3個紹介しました。

 次回は、関数に関するアップデートをテーマに紹介します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook<個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20141 2024/09/24 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング