ジェネリクスの共変性と反変性とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ジェネリクスの共変性と反変性の意味・解説 

ジェネリクスの共変性と反変性

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/17 21:54 UTC 版)

C SharpとJavaの比較」の記事における「ジェネリクスの共変性と反変性」の解説

C#Java共に、ジェネリクスの共変性と反変性 (covariance and contravariance) を持つ。ただしC#における共変性反変性サポートバージョン4.0以降である。 C#では、型定義側で共変性outあるいは反変性inを指定し利用側では変性指定行わない。なお、C#値型不変 (invariant) であり、共変性反変性適用されない。 // C#// System.Func同様のデリゲートを定義。// 型定義側で変性指定を行う。public delegate TOut MyFunc(TIn arg);public class GenericsTest { public static void Main() { // 利用側では変性指定行わない。 MyFunc func1 = x => "<" + x + ">"; MyFunc func2 = func1; object ret = func2("test"); System.Console.WriteLine(ret); System.Console.WriteLine(ret.GetType()); // System.String }} Javaでは、型定義側では変性指定行わず利用側で共変性extendsあるいは反変性super指定するJavaではさらに、上限下限いずれも指定しないワイルドカード?による型引数指定が可能である。以下にJava 8の例を示す。 // Java// java.util.function.Function同様のインターフェイスを定義。// 型定義側では変性指定行わない。@FunctionalInterfaceinterface MyFunc { TOut apply(TIn arg);}public class GenericsTest { public static void main(String[] args) { // 利用側で変性指定を行う。 MyFunc func1 = x -> "<" + x + ">"; MyFunc func2 = func1; Object ret = func2.apply("test"); System.out.println(ret); System.out.println(ret.getClass().getName()); // java.lang.String // 変性の上下限いずれも指定しないこともできる。 java.util.List list; }}

※この「ジェネリクスの共変性と反変性」の解説は、「C SharpとJavaの比較」の解説の一部です。
「ジェネリクスの共変性と反変性」を含む「C SharpとJavaの比較」の記事については、「C SharpとJavaの比較」の概要を参照ください。

ウィキペディア小見出し辞書の「ジェネリクスの共変性と反変性」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ジェネリクスの共変性と反変性」の関連用語

ジェネリクスの共変性と反変性のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ジェネリクスの共変性と反変性のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのC SharpとJavaの比較 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS