비디오: [깜따긔야] 자바 기초 24강 형변환 2024
Java는 프로그래밍하기에 좋은 방법이지만 때로는 창의력을 발휘해야합니다. 이렇게하려면 와일드 카드 유형 매개 변수를 사용할 수 있습니다. 다음과 같이 선언 된 메서드가 있다고 가정합니다.
public void addItems (ArrayList list)
// 메서드 본문이 표시되지 않음
}
생각하는 질문: 다음 문이 컴파일됩니까?
addItems (새로운 ArrayList ());
String
는
Object
의 하위 유형이기 때문에 놀랍습니다. 따라서 객체의
ArrayList
를 허용한다는 매개 변수는
ArrayList
문자열을 허용한다고 생각할 수 있습니다. 불행히도, 공식적인 타입 매개 변수에 관해서 상속은 그렇게 작동하지 않습니다. 대신
와일드 카드라고하는 제네릭의 다른 기능을 사용해야합니다.
public void addItems (ArrayList list)
이 경우 물음표는 모든 종류의 유형을 여기에서 코딩 할 수 있음을 나타냅니다.
상속과 거의 비슷하지만 실제로 매개 변수를 특정 수퍼 클래스의 컬렉션으로 제한하고 싶다면 어떻게해야할까요? 예를 들어
HourlyEmployee
및
SalariedEmployee
라는 두 개의 하위 클래스가있는
Employee
수퍼 클래스가있는 급여 시스템에서 작업하는 경우이 메소드에서 허용하도록합니다
Employee
개체,
HourlyEmployee
개체 또는
SalariedEmployee
개체 중
ArrayList
이 경우, 다음과 같이
extends
절을 와일드 카드에 추가 할 수 있습니다:
Employee
,
HourlyEmployee
또는
SalariedEmployee
형식의
ArrayList
메서드를 사용하여 addItems
addItems
메소드가 형식 유형 매개 변수
를 사용하여 요소의 유형을 지정하는 제네릭 클래스에 나타나는 것으로 가정합니다. 클래스가 받아들이고
addItems
메서드가
E
형식의
ArrayList
또는 그 하위 클래스를 받아들이 길 원할 때
public void addItems (ArrayList list)
여기서 와일드 카드 유형 매개 변수
는 단순히
ArrayList < 는
E
또는
E
를 확장하는 모든 유형이 될 수 있습니다.