Javaのジェネリック医薬品、簡単な紹介。修正方法の使用

すべてのタイプの、<R>(R r)がデフォルトのオブジェクトを格納することができます。この大文字のRは、任意に、定義される前と後の一貫性を維持するために!

パッケージcom.aaa.test;
 / * 
 *証明する一般的な方法を変更する方法ああ
 *ヘビーデューティーの使用削減の増加コードの再利用方法の効果
 *実際の列
 * 
 * / 

インポート 静的 org.junit.Assert *。を

インポートorg.junit.Test; 

インポートcom.aaa.entity.People;
 インポートcom.aaa.entity.User、

パブリック クラスDemo03 {
     // 方法run01前<W>の定義は、パラメータ(W W)のリストである
     。// Wはデフォルトのタイプは、オブジェクトの値は、様々なタイプの置くことができるで
    パブリック <Wである> ボイドrun01(WをW){ 
        System.out.printlnは(:+ "W run01値は方法実行" ; W)を
    } 
    
    
    公共 <R&LT> ボイドrun02(R&LT R&LT){ 
        System.out.printlnは( "一般的な経験速い強いと----" + R&LT); 
    } 
    
    公共の 静的な 無効メイン(文字列[]引数){ 
        Demo03 D = 新しい新しいDemo03(); 
        
        / / 書き込まれた値は、Wの値に書き込まれ、wはターゲットオブジェクトに等しくなります。
        d.run01( "HA" ); 
        d.run01( 456 ); 
        d.run01( 'C' ); 
        
        ユーザーU = 新しい新しいユーザー(2、 "MA菲菲" ); 
        d.run01(U); 
        
        
    } 
    
    @Test 
    公共 ボイドテスト名は、()スロー例外{ 
        Demo03 Dを= 新新Demo03(); 
        d.run02( "各種のデータを置くことができ、一般的なオブジェクトの種類をデフォルトの" ); 
        d.run02( 666 ); 
        
    
    } 
    @Test 
    公共 のボイド TEST01()がスロー例外{
         // すでに知られているパンは、それは私が内側にそれを使用するエンティティクラスを定義することができた場合、デフォルトのタイプはObjectオブジェクトのですか?
        D = Demo03 新しい新Demo03(); 
        
        // でユーザーIDと名前を定義し 
        、ユーザーU = 新しい新しいユーザー(1は、 "ル・ウェイはこれを回帰さ!" ); 
        D.run01(U);      // なぜ私はそれがあるdemofanxingのですか? Wは、オブジェクトがのtoStringユーザがユーザエンティティ・クラス・オブジェクトで返されるこの時点でユーザーの値です。
        
        
        P-人々 = 新新人々 (2、 "SADF" ); 
        d.run01(P);    // W値
        
    } 
}

第二に、一般的な定義は、複数の

パッケージcom.aaa.test、

インポート 静的 org.junit.Assert *。; 

インポートorg.junit.Test; 

インポートcom.aaa.entity.User; 

/ * 
 *ジェネリックにおける複数のプレゼンテーションを定義する
 複数のパラメータを定義*ときカンマで区切って指定します。
 * 
 *同様に、一般的なデフォルト値は、本明細書で定義されるオブジェクト
 * 
 * / 
パブリック クラスDemo06 {
     パブリック <S、B> ボイドTEST01(S、S、B B){ 
        System.out.printlnは(複数の」値が定義されています: "+ S +" ---- Bの値によって定義される:「+ B); 
    } 
    公共の 静的な 無効メイン(文字列[]引数){ 
        Demo06 D = 新しい新しいDemo06()。
        
        d.test01( "こんにちは"、 "私は朝日メイプルだ" ); 
        d.test01( 66、999 );         
        
    } 
    @Test 
    公共 ボイドテスト名は()スロー例外{ 
        Demo06 D = 新しい新しいDemo06を();    
         // どこオブジェクト 
        ユーザー= U1 新しい新しいユーザ(1、 "汎用" ); 
        ユーザU2 = 新しい新しいユーザ(1、 "両者の定義"。); 
        
        d.test01(U1、U2); 
        
        d.test01(U1、 "使用と混合" ); 
    } 
}

第三に、ワイルドカードパラメータの制約。

以下のためのパッケージ変更com.aaa.test; 

インポートはjava.util.ArrayList;
 インポートはjava.util.List; 

インポートcom.aaa.entity.User; 

/ * 
 *デモジェネリックワイルドカード。
 *リスト<?>リストは、リストに定義されていますか?  
 * 
 *以下の参考文献は、リスト内のどのような、定義されているデータの種類を定義したい
 データの種類がリストに定義された後*、後者は固定されています。
 * 
 * / 
パブリック クラスDemo07 { 

    公共 ボイド TEST01(一覧<?> リスト){ 
        するSystem.out.println( "出力の長さを設定list01 ----" + はlist.size()); 
    } 
    公共の 静的な 無効メイン(文字列[]引数){ 
        Demo07 D = 新しい新Demo07(); 
        
        // 型ワイルドカード定義するために設定されたデータ参照のリスト作成します
         // ここで前にユーザーを。
        リスト<ユーザー> list01 = 新しい新規のArrayList <> (); 
        
        // ユーザーの値に 
        ユーザU = 新しい新しいユーザ(1、 "HA" ); 
        ユーザU2 = 新しい新しいユーザー(2、 "姫" );
         // に追加リスト設定
        list01.add(U); 
        
        list01.add(U2); 
        
        d.test01(list01); 
        
        
        // データ収集コンビニエンスlist01 
        (ユーザーユーザー:list01){ 
            System.out.printlnは(ユーザ); 
        } 
    } 
}


パッケージcom.aaa.test、

インポートのjava.util.HashMap;
 インポートjava.util.Map; 

パブリック クラスDemo08 {
     公共  TEST01(<?、?>地図マップ){ 
        System.out.printlnは(「マップの長さ- - 「+ map.size()); 
    } 
    
    公共の 静的な 無効メイン(文字列[]引数){ 
        Demo08 D = 新しい新しいDemo08(); 
        
        
        // 定義されたワイルドカードのデータ・タイプ整数、文字列 
        マップ<整数、文字列> = map01 新しい新規のHashMap <> (); 
        
        // ここでの唯一の整数型とデータを追加する文字列に従ってことができます。
         map01.put(1、 "lubenwei"); 
         map01.put( 2、 "马飞飞" )。
         
         System.out.println(map01)。
        
    
        
    } 

}

第四に、ワイルドカードパラメータの制約は:?クラスは、すべてのオブジェクトタイプ自体とそのサブクラスが含まれている拡張します

 

パッケージcom.aaa.test; 

インポート 静的 org.junit.Assert *。; 

輸入はjava.util.ArrayListの;
 インポートはjava.util.List; 


インポートcom.aaa.entity.People;
 インポートcom.aaa.entity.User;
 インポートcom.aaa.entity.ZiUser; 


/ * 
 *ワイルドカードパラメータの制約
 *ユーザー・サブクラスのziUserにユーザーが使用することができます。この時間を延長?。
 *?スーパーユーザーの共感ユーザーの親クラスの人が使用することができます。
 *   
 *?すべてのオブジェクトは、Eを拡張し、彼の親クラスの現在のクラスを使用することができます。
 * 
 *親クラスのサブクラス
 * 
 * / 
パブリック クラス Demo09 <E> { 
    
    公共  TEST01(一覧<?ザ・拡張は、ユーザー> リスト){ 
        System.out.printlnは( +「オブジェクトタイプは、すべて彼のクラスとサブクラスの拡張などが」リスト); 
    } 
    
    // ユーザーオブジェクトの後、スーパーユーザーを持つ人々へのサブクラスを使用することもできます。
    公共 のボイド TEST02(一覧<?スーパーユーザー> リスト){ 
        System.out.printlnは(「スーパーこのようなすべての親を構成するオブジェクトの種類と彼の」+ リスト); 
    } 
    

    公共 ボイド <?TEST03(一覧拡張 E> 一覧){ 
        System.out.printlnは( + "?Eは、すべてのオブジェクトタイプとの彼の親クラス延び含ま" ;リスト)
    } 
    パブリック 静的 ボイドメイン(文字列[]引数){ 
        
        Demo09 <OBJECT> = Dを新しい新しい Demo09 <> (); 
        
        // それが延びているので、サブクラスziUserユーザーは、ここで使用されています!
        一覧<ZiUser> = list0101 新しい新しいのArrayList <> (); 
        リスト <ユーザー> list01 = 新しい新しいのArrayList <> (); 
        
        // にデータを追加する 
        ユーザU1 = 新しい新しいユーザー(5、 "姫"。); 
        list0101.add(新新 ZiUser (2、 "ハロー" )); 

        // インデックスユーザ 
        list01.add(0 、U1); 
    
        d.test01(list0101); 
        d.test01(list01)

        のSystem.out.println(「------ --------------- " );
         //ユーザーの親の人が入る 
        一覧<ピープル> list02 = 新しい新しいのArrayList <> (); 
        リスト <ユーザー> = list0201 新しい新しいのArrayList <> (); 
        list0201.add(新新スーパー続いユーザー(2、」、ユーザーの親の人も使用することができます" )); 
        list02.add(新しい新しい人(5、"階級の人々 " )); 
        d.test02(list02); 
        d.test02(list0201); 
         
        
         
    } 
       
}

 

おすすめ

転載: www.cnblogs.com/ZXF6/p/11128744.html