Java読書会BOF「Kotlinイン・アクション」を読む会 第6回に参加
Kotlin in Action 第6回
ジェネリクスの後半(9章)とリフレクションの章(10章)とDSL(11章)を読みました。 10章は技術的にもちょっと面白い読み物になっていて、オープンソースのjsonシリアライザ/デシリアライザであるjKid*1の解説をしながらリフレクションを学ぶ章になっています。
ジェネリクスにつけるout,in
- outをつけると共変
- inをつけると反変
- それ以外は不変(javaと同じ)
p322の表がおかしい
共変 | 反変 | 不変 |
---|---|---|
Class<out T> |
Class<in T> |
MutableList<T> |
クラスのサブタイピングは維持 | サブタイピングは逆 | サブタイピングなし |
Tはoutポジションだけ | Tはinポジションだけ | Tはどこでも |
inポジションだけにすべき箇所の文言がoutポジションになってしまっている。
::
の意味
クラス参照の意味。p344に軽く説明。(なぜここ?)
- String::ClassはJavaのString.classと同じ意味。
- p146メンバ参照で解説されているものと同じ
久しぶりに読むと忘れちゃいますね。
関数インターフェイス?
p332ページのまとめ
・関数インターフェイスは、1つめの方パラメータについて反変、2つ目の方パラメータについて久代編として宣言されています。
とありますが、「関数インターフェイス」と書いてしまうと一般的な関数の意味になってしまうのでは?という違和感を示す方がいました。322ページにあるFunctionインターフェイスのことなので、Functionインターフェース、もしくはFunctionNインターフェースにすれば違和感がない気がする。
Deprecatedで推奨する関数を通知できる。
p335の内容です。
@Deprecated("Use removeAt(index_ instead.",ReplaceWith("removeAt(index)")) fun remove(index int){...}
こんな感じで非推奨になったAPIに対して代替を示すことができます。この機能はJavaにはなかったため(多分)大変便利だと思います。
inteliJ IDEAではAlt+ ENterはかなり使う
p338
IntelliJ IDEAでは、コンパイラの警告状で[ALT] + [Enter]を押して表示されるオプションメニューから[Suppress]を選ぶことで、このアノテーションを挿入できます。
とありますが、コンパイラ抑制系のアノテーションの挿入の推奨をかなりしてくるとのことです。
これですね。
Java EE 8のJSONのライブラリが
- jsonp
- jsonb
などがかなり良いらしい
jackson,GSONの作者が言ってたらしい。
340文章がおかしい。
最後の塊の二行目。
data class Person( @jsonName("alias") val firstName: String, @JsonExclude val age: Int? = null )
プロパティfirestNameを示すJSON内でのキーを変更するために、アノテーションをつけています。これは、プロパティageをシリアライゼーションやでシリアライゼーションから除外するためです。
「これは、プロパティageを~」の直前に@jsonExcludeの説明がないと変。何かコピペのし忘れ?のように思える。
p350 KFunctionNはどこに生成される?
KFunctionNはKFunction1,KFunction2,KFunction3...と無限に存在しているのか?と思ったがこれはコンパイラによって生成されるらしい。これがどこに生成されるのか?という話題になった。(宿題)
p377誤植
2こ目のコードブロック。
閉じのダブルクォート"が抜けている。
感想
この本の9章、10章は非常に難しいです。少し理解できない点があるので復習中です。 9章は4時間ほどかけてコードを動かしながら精読しました。 明日以降10章も復習したいと思います。
次回は11.2から!
おそらく午前中で終了する程度の分量です。午後は何かレクをするようです(卓球?)。
7/21(土)のJava読書会の会場は、海辺の「川崎マリエン」になりました。午後は併設の体育館で卓球大会などを予定してます #javareading
— Tomohiro Takahashi (@ttdummy) June 16, 2018
ちなみに高橋さんは利き手じゃなくても私に勝てるそうです。
- 作者: Dmitry Jemerov,Svetlana Isakova,長澤太郎,藤原聖,山本純平,yy_yank
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/10/31
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る