これはKotlin特有の問題ではありませんが、なぜ宣言サイトの分散(共変および反変)を使用するのかを理解したいと思います。私はそれらを使用する方法を理解しているだけで、私は多くの利点を見ないか、場合によっては別のものを選択しなければならず、なぜ私はUse-site分散をいつも使用したくないのですか?Declaration-Site Varianceを使用する理由
1
A
答えて
3
宣言サイトでは、クリエイターが最初に作成されたときにクリエイターがすでに決定した場合、分散について考える必要がないため、クライアントはジェネリックタイプのクラスを簡単に使用できます。このようなジェネリッククラスを扱う場合、コンパイラは可能な分散について確かめることができます。
//declaration-site
abstract class ReadableList<out T> {
abstract fun get(): T
}
fun workWithReadableList(strings: ReadableList<String>) {
val objects: ReadableList<Any> = strings // This is OK, since T is an out-parameter, ReadableList is covariant in its type T
// ...
}
冗長な使用サイトのJava構文を見てください。多くの人々はsuper
とextends
の違い、またはどのような差異があるかを知りません。 Kotlinのキーワードin
とout
は少し説明的で、他の言語でも使用されています。
+0
清算していただきありがとうございます。私はコレクションで宣言サイトの差異を使用していると考えていましたが、クラスとして検討する必要があります。 – BigApeWhat
関連する問題
- 1. ソートをソートする理由累積を使用する理由
- 2. armadilloでvar/variance関数を使用する方法
- 3. JumboEnumSetを使用する理由とその理由
- 4. SSRS vs. Power BI - 使用する理由とその理由
- 5. jsp:forwardを使用する理由
- 6. フレックスイベントで「バブル」を使用する理由
- 7. 「text/javascript」を使用する理由
- 8. fcloseでsegfaultを使用する理由
- 9. SIPプロトコルを使用する理由
- 10. ブラウザでES6を使用する理由
- 11. TypeScript - タイピングを使用する理由
- 12. IWindsorContainerでIKernelを使用する理由
- 13. FindControlを使用する理由...?
- 14. ラムダで# 'を使用する理由は?
- 15. laravelでガードを使用する理由
- 16. MonadStateでMultiParamTypeClassesを使用する理由
- 17. (void)someIntを使用する理由コード
- 18. "^"を使用する主な理由
- 19. Dで@propertyを使用する理由
- 20. エンティティマネージャを使用する理由
- 21. フェデレーションプロバイダを使用する理由
- 22. JPA Entity Managerを使用する理由
- 23. Fluentmigratorを使用する理由
- 24. aspを使用する理由:HyperLink
- 25. svelte jsを使用する理由
- 26. Djangoを使用する理由
- 27. CodeigniterでSlugを使用する理由
- 28. flafでkafkaを使用する理由
- 29. RailsでEmber.jsを使用する理由
- 30. シナリオ:ConcurrentHashMapを使用する理由
kotlinドキュメントのジェネリックスセクションを読んだことがあるかどうかわかりませんが、このエリアでは私にとって多くのことが解決されました。 https://kotlinlang.org/docs/reference/generics.html – Neil