Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlinの特徴として語られる機能の効果を実践での結果から紹介する from サーバーサイド

Kotlinの特徴として語られる機能の効果を実践での結果から紹介する from サーバーサイド

2019年7月2日(火) 「集まれKotlin好き!Kotlin愛好会 vol.12」の談義資料です。

Avatar for Takehata Naoto

Takehata Naoto

July 02, 2019
Tweet

More Decks by Takehata Naoto

Other Decks in Programming

Transcript

  1. 宣伝 • CEDEC 2019登壇 • Unity C# × gRPC ×

    サーバーサイドKotlinに よる次世代のサーバー/クライアント通信 〜ハイ パフォーマンスな通信基盤の開発とMagicOnion によるリアルタイム通信の実現〜 https://cedec.cesa.or.jp/2019/session/detail /s5c9dede391631
  2. Javaの場合 ①引数をNull不可にしている(Lombokを使用) ②Null可の変数を引数に渡して実行している public void execute(Integer id) { createUser(id); }

    private void createUser(@NotNull Integer id) { // ・・・ } ① ② 実行時にNullPointerExceptionが発生する
  3. val user = selectUser(id) user.name = "hoge" updateUser(user) オブジェクトの取得、更新 ①Userオブジェクトを取得

    ②nameプロパティを更新 ① ② valで変数定義しても、プロパティの値は書き換えられる (プロパティがvarで定義されていれば) data class User(val id: Int, var name: String)
  4. Javaの場合 public void execute() { User user = new User();

    user.setId(1); user.setName("Applibot"); registerUser(user); System.out.println("id=" + user.getId() + "name=" + user.getName()); }
  5. Javaの場合 @Builder @Data public class User { private Integer id;

    private String name; private String profile; private Integer age; } return User().builder() .id(1) .name(”LoveKotlin") .age(30) .build();
  6. Kotlinの場合 data class User(val id: Int, val name: String, val

    profile: String = "", val age: Int) return User(id = 1, name = "Applibot", age = 30) デフォルト引数、名前付き引数を使う
  7. Kotlinの場合(別解) val user = User().also { it.id = 1 it.name

    = "Applibot" it.age = 30 } ・コンストラクタがない場合(データクラスでない場合等)に使える ・Javaで作られたクラスに対して使う場合にも有効(ORM関連の自動生成クラス等)