일반적인
이는 컴파일 타임에 잘못된 유형을 감지할 수 있도록 허용하는 컴파일 타임 유형 안전 감지 메커니즘으로,
본질적으로 매개변수화된 유형, 즉 조작할 데이터 유형이 매개변수로 지정됩니다.
일반 클래스 정의 형식
수정자 클래스 클래스 이름 <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의 정적 메서드에서는 반환된 컬렉션을 추가하거나 삭제할 수 없습니다. 즉, 컬렉션의 길이를 변경할 수 없습니다.