JAVA 학습-제네릭 클래스 정의, 제네릭 메서드, 제네릭 인터페이스, 유형 와일드카드, 변수 매개변수

일반적인

이는 컴파일 타임에 잘못된 유형을 감지할 수 있도록 허용하는 컴파일 타임 유형 안전 감지 메커니즘으로,
본질적으로 매개변수화된 유형, 즉 조작할 데이터 유형이 매개변수로 지정됩니다.

일반 클래스 정의 형식

수정자 클래스 클래스 이름 <type>{ }
public class Generic{ }
T, E, K, V 및 기타 유형의 매개변수는 종종 제네릭을 나타내는 데 사용됩니다.

코드 예:
일반 정의:

public class shili<T> {
    
    
    private T t;

    public T getT() {
    
    
        return t;
    }

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

수업에 적용:

public class fanxin {
    
    
    public static void main(String[] args) {
    
    
 
        shili<String> s1 = new shili<String>();
        s1.setT("hahaa");
        System.out.println(s1.getT());

        shili<Integer> s2 =new shili<Integer>();
        s2.setT(22);
        System.out.println(s2.getT());
    }
}

제네릭 메서드

제네릭 메소드를 사용하면 동일한 메소드가 다양한 유형의 입력 콘텐츠를 필요로 하는 상황을 메소드 호출 시 보다 편리한 방식으로 정의할 수 있으며,
메소드를 사용하여 여러 데이터 유형의 메소드를 구현할 수 있습니다
. 제네릭 메소드 예제 코드:

   public class Gen<T> {
    
    
    public void show(T t){
    
    
        System.out.println(t);
    }
}

구현 클래스 코드:

Gen<String> g1 = new Gen<String>();
        g1.show("hhh");
        Gen<Integer> g2 = new Gen<Integer>();
        g2.show(39);
        Gen<Boolean> g3 = new Gen<Boolean>();
        g3.show(true);

일반 인터페이스

제네릭 인터페이스를 사용하면 인터페이스를 호출할 때 동일한 인터페이스에 다양한 유형의 입력 콘텐츠가 필요한 상황을 보다 편리한 방식으로 정의할 수 있습니다.

1. 인터페이스 수정자 인터페이스 인터페이스 이름 <유형>을 정의합니다(예: public interface Generic{}
2. 인터페이스의 구현 클래스를 정의하고 구현 클래스의 이름에 대해 인터페이스 이름 뒤에 Impl을 추가한 다음 메서드
public class를 다시 작성합니다. GenericImpl은 Generic {}를 구현합니다.
3. 애플리케이션에서 다형성 방식으로 호출합니다.

        Generic<String> s = new GenericImpl<String>();
        s.show("haha");
        Generic<Integer> s1 = new GenericImpl<Integer>();
        s1.show(22);

와일드카드 입력 <?>

<?> 와일드카드 입력

해당 요소는 모든 유형과 일치할 수 있으며
다양한 일반 유형의 상위 클래스이며 요소를 추가할 수 없음을 의미합니다.

<?extends type> 와일드카드 유형의 상한, 상한은 이 유형 <?super type> 와일드카드 유형의 하한, 하한은 이 유형

List<?> list1 = new ArrayList();

가변 매개변수

메서드는 여러 데이터 형식의 합계를 실현할 수 있습니다
. 수정자 반환 값 유형 메서드 이름(데이터 유형...변수 이름)

     public static int sum(int... a){
    
    
        int sum = 0;
        for(int I : a){
    
    
            sum +=i;
        }
        return sum;
    }

참고: 여기서 변수는 실제로 배열입니다.
변수 매개 변수를 포함하여 변수에 여러 매개 변수가 있는 경우 변수 매개 변수는 끝에 배치해야 합니다.

가변 매개변수를 사용하는 List, Set 및 Arrays의 정적 메서드에서는 반환된 컬렉션을 추가하거나 삭제할 수 없습니다. 즉, 컬렉션의 길이를 변경할 수 없습니다.

추천

출처blog.csdn.net/weixin_52723971/article/details/110748624