2016-07-19 5 views
1

이와 같은 과제가 발생한 이유는 무엇입니까?와일드 카드와 관련된 과제의 실제 적용은 무엇입니까?

List<? extends Fruit> flist = new ArrayList<Apple>(); 
// flist.add(new Apple()); 
// flist.add(new Fruit()); 
// flist.add(new Object()); 

Apple 컨테이너를 과일 용기에 "업 캐스팅"한 후에는 아무 것도 추가 할 수 없습니다.

나는 우리가 같은 것을 할 수 알고 :

List<Apple> basket = new ArrayList<Apple>(); 
//Fill the basket with tons of juicy apples 
List<? extends Fruit> fruitContainer = basket; 

을 그리고 우리는 fruitContainer 보유 요소를 사용하여 과일 인터페이스을 사용할 수 있습니다. 그러나 실용적인 이유 우리가 나중에 아무것도 추가 할 수없는 경우, 이런 식으로 뭔가를 할 수 있습니까?

List<? extends Fruit> flist = new ArrayList<Apple>(); 

답변

0

그 라인은 촬영 전체 아마 실제적인 사용이 없다,하지만 당신은 당신의 질문에서 언급 한 바와 같이하여 각 부분은 그것의 (List<? extends Fruit> flistnew ArrayList<Apple>()), 개별적으로, 실제이있다 용도. 그것들은 타당하고 유용하며 단지 조합하지 않아도됩니다 (목록에 무엇이든 넣을 필요가 없다면). 그것이 컴파일되는 이유이며, 각 부분은 유효합니다. 프로그래머들이 우리를 합리적이고 유용한 방식으로 결합하는 것은 우리에게 달려 있습니다.

+0

질문 : 프로그래머가 왜 그런 식으로해야합니까? 현실적인 시나리오를 찾을 수 있습니까? :) – acejazz

+0

@acejazz : 첫 번째 문장은 다음과 같은 내용을 다루고 있습니다. 나는 그것을 수행 할 실용적인 이유가 없다고 생각합니다. (내가 나중에 말하면 실제로 목록에 아무것도 추가 할 필요가 없다면). –

관련 문제