[解決済み] kotlinのoutキーワードとは
質問
の意味がよくわかりません。 アウト のキーワードの意味がわかりませんでした。
サンプルはこちらで確認できます。
List<out T>
この意味を説明できる人がいたら それは本当にありがたいことです。
どのように解決するのですか?
この署名で。
List<out T>
とすればよい。
val doubleList: List<Double> = listOf(1.0, 2.0)
val numberList: List<Number> = doubleList
というのは T は 共変 :
型パラメタが T クラスの C が宣言されている場合 アウト , C<ベース> は安全に スーパータイプ の C<Derived> .
とは対照的です。 で とは異なり、例えば
Comparable<in T>
とすればよい。
fun foo(numberComparable: Comparable<Number>) {
val doubleComparable: Comparable<Double> = numberComparable
// ...
}
というのは T は 反変数 :
型パラメタが T クラスの C が宣言されている場合 で , C<Derived> は、安全に スーパータイプ の C<ベース> .
もう一つの覚え方。
消費者 で 生産者 アウト .
見る Kotlin Generics Varianceを参照してください。
-----------------2019年1月4日に更新された------------------。
には、"。 コンシューマー・イン、プロデューサー・アウト の場合、Producerから読み込むだけ - T型の結果を得るためのメソッドを呼び出し、Consumerに書き込むだけ - T型のパラメータを渡してメソッドを呼び出すのです。
の例では
List<out T>
の例では、これができることは明らかです。
val n1: Number = numberList[0]
val n2: Number = doubleList[0]
ということで、安全なのは
List<Double>
とした場合
List<Number>
が期待されるため
List<Number>
のスーパータイプです。
List<Double>
の上位型であり、その逆はありません。
の例では
Comparable<in T>
:
val double: Double = 1.0
doubleComparable.compareTo(double)
numberComparable.compareTo(double)
ということで、安全なのは
Comparable<Number>
とした場合
Comparable<Double>
が期待されるため
Comparable<Double>
のスーパータイプです。
Comparable<Number>
の上位型であり、その逆はありません。
関連
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] List<Dog> は List<Animal> のサブクラスですか?Java のジェネリックはなぜ暗黙のうちに多相性にならないのですか?
-
[解決済み] Kotlin 三項条件演算子
-
[解決済み] チェックされていないキャストの警告に対処するにはどうすればよいですか?
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
-
[解決済み] Kotlinのvarとvalの違いは何ですか?
-
[解決済み】KotlinでJavaの静的メソッドに相当するものは何ですか?
-
[解決済み] Kotlinで、nullableな値を扱う慣用的な方法、参照または変換する方法は何ですか?
-
[解決済み】Kotlinの標準ライブラリで利用できるJava 8 Stream.collectに相当するものは?
-
[解決済み] なぜ例がコンパイルできないのか、別名、(co-, contra-, in-)分散はどのように機能するのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] golangでチャンTの満杯を監視する
-
[解決済み] KotlinのPair用コンパレータ
-
[解決済み】Kotlinのreifiedキーワードはどのように機能するのですか?
-
[解決済み】Scala。抽象型とジェネリックス
-
[解決済み] Kotlinのジェネリックにおける "*"と "Any "の違いについて
-
[解決済み] なぜ例がコンパイルできないのか、別名、(co-, contra-, in-)分散はどのように機能するのか?
-
[解決済み] KotlinでGsonを使ったTypeToken + ジェネリックの使い方
-
[解決済み] kotlinのoutキーワードとは
-
[解決済み] なぜGoにはジェネリックがないのか?