와일드카드 <? extends *>
다양한 제네릭타입을 수용하다
제네릭타입의 일부분을 나타내는데 사용, 제한된 제네릭타입을 사용하는것과는 다르게 다양한 제네릭 타입을 수용한다.
https://standout.tistory.com/1395
Animal이란 클래스를 상속받은 Dog와 Cat이 있다고 가정하자.
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking");
}
}
class Cat extends Animal {
public void meow() {
System.out.println("Cat is meowing");
}
}
이때 feedAll메서드는 List를 매개변수로 받으나
Animal클래스나 혹은 Animal클래스를 상속받은 하위 클래스로 제한해야한다.
이때 쓰이는 것이 <? extends *> 와일드카드
public class WildcardExample {
public static void main(String[] args) {
List<Animal> animals = new ArrayList<>();
animals.add(new Dog());
animals.add(new Cat());
// animals의 모든 동물을 먹이주는 메서드 호출
feedAll(animals);
}
public static void feedAll(List<? extends Animal> animals) {
for (Animal animal : animals) {
animal.eat();
}
}
}
Animal is eating
Animal is eating
'JAVA' 카테고리의 다른 글
제네릭 타입의 형변환 (0) | 2024.02.14 |
---|---|
다양한 타입의 인자를 처리할 수 있도록 하는 메서드: Generics 제네릭 메서드 (0) | 2024.02.14 |
제한된 제네릭 클래스 <T extends *> (0) | 2024.02.14 |
Generics 제네릭 클래스의 객체 생성과 사용 (0) | 2024.02.14 |
Generics 지네릭스, 형변환을 생략하다 (0) | 2024.02.14 |