java jeneric


間違ったところがあれば、コメントや非難を歓迎します.
https://namjackson.tistory.com/18を参考に作成しました.
大まかに作成されたコードが何なのかを知るために、参考にしてください.
1 . ジェニーン・リックバン
 
public class GenericSource<T> {
	private T t;

	public T getT() {
		return t;
	}

	public void setT(T t) {
		this.t = t;
	}

}
 


public class GenericSource2<T> {

	private int test2;
	private int test3;

	public int getTest2() {
		return test2;
	}

	public void setTest2(int test2) {
		this.test2 = test2;
	}

	public int getTest3() {
		return test3;
	}

	public void setTest3(int test3) {
		this.test3 = test3;
	}

	@Override
	public String toString() {
		return "GenericSource2 [test2=" + test2 + ", test3=" + test3 + "]";
	}

}
  • インタフェースは
  •  interface InterFaceExample <T1,T2>{
        T1 testMethod12(T2 t);
        T2 testMethod13(T1 t);
    }
    public class TestInterface implements InterFaceExample<String, Integer>{
    
    	@Override
    	public String testMethod12(Integer t) {
    		return String형태;
    	}
    
    	@Override
    	public Integer testMethod13(String t) {
    		return Integer형태;
    	}
    } 
    3.使用方法の場合

    //メソッドのパラメータTが宣言されている場合は、タイプを返す前にGenericタイプを宣言する必要があります。


    public class TestGenericMethod {
     public static <T> List<T> methodEx(List<T> list,T item)
     {
    	 list.add(item);
    	 return list;
     }

    -->TをString Classタイプに変えてもOK

     public static <String> List<String> methodEx12(List<String> list,String item)
     {
    	 list.add(item);
    	 return list;
     }
     public static <Integer> List<Integer> methodEx12(List<Integer> list,String item)
     {
    	 list.add(item);
    	 return list;
     } 
    //parameterに形のリストがあるので、車に戻ってもそれを使います.
    }
    JENICクラステスト
  • Main関数または実行クラスで行う
  • public class GenericMain {
    	public static void main(String args[]) {
    
      		GenericSource<Integer> test = new GenericSource<Integer>();
    		GenericSource<String> test1 = new GenericSource<String>();
    		test.setT(10);
    		
      
      		test.setT("test123"); error[test에는 문자열이 들어올수없다 위에 이미 선언을 해놔서]
     		
    		test.setT(123);// integer으로 했을떄 정상
     
    		test1.setT(123); error[test1 변수는 String 클래스만 들어오게 설정해놔서 int형은 들어올수 없다]
            // String 으로 했을 경우는 정상 
    		test1.setT("test123"); 
    		
    		String paramStr = "1";
    		Integer paramint =0;
    
    		List<String> strList = new ArrayList<String>();
    		List<Integer> intList = new ArrayList<Integer>();
    		
    		TestMethod.methodEx(strList, paramStr);(O);
    		TestMethod.methodEx(strList, paramint);(X);
    	}
    }
    5.次はワイルドカード
    1.Genericタイプは存在する.
    2.?未知のタイプ、使い方は次のとおりです.
    3. : すべてのオブジェクトはデータ型で、内部はオブジェクトとみなされます.
    4.:オブジェクトリポジトリ内の親オブジェクトを指定します.内部オブジェクトとして扱われます.
    5.:名前付きオブジェクトリポジトリのサブオブジェクトを継承し、内部的に名前付きオブジェクトリポジトリとみなす