내 ArrayList를 인식하지 못합니다. 결과를 검사 할 때 ArrayList 항목을 래핑하는 싱글 톤 목록입니다. 왜 Java가 더 적절한 생성자를 사용하지 않으며 강제로 내 옵션을 사용할 수 있습니까?왜 자바 내가 두 생성자 설정과 같이이 오버로드 된 생성자 상황
답변
통화 제 생성자 :
new XMessage(information, new ArrayList<Object>());
두 번째 생성자를 호출 ArrayList<Object>
인 반면
new XMessage(information, new ArrayList<String>());
ArrayList<String>()
가 List<Object>
로 취급되지 않는다. 다음과 같은 생성자를 사용하는 것이 좋습니다 : 아래의 제안
public XMessage(Information info, List<? extends Object> results)
@LuiggiMendoza 한다.
또한 모든 객체 목록을 전달하려면 와일드 카드를 사용해야합니다. public XMessage (Information info, List extends Object> results). –
와우, 정보 주셔서 감사합니다! – MikeG
@LuiggiMendoza : 감사합니다. 내 대답에 제안을 추가했습니다. –
List<String>
가 List<Object>
가 수신자 잘 목록에 물건을 추가 할 수 있다는 것입니다 서브 클래스 (또는에 대한 다른 substituable)없는 이유, 그리고 List<String>
는 유형 안전 할 예정이다.
단순히 동일한 입력을 사용할 수 없다면 here 옵션에 대해 더 자세히 읽을 수 있습니다.
나는 위의 대답을 시도하고 그들이 나를 위해 일하고 있다고 생각했지만 거짓 긍정이되었습니다. 나는이 생성자와 함께 일하고 나를 위해 일했다 :
public XMessage(Information info, Object result) {
this(info, result instanceof List ? (List<Object>) result : Collections.singletonList(result));
}
- 1. 자바 오버로드 된 생성자
- 2. 오버로드 된 생성자 사용
- 3. 오버로드 된 생성자 모호성
- 4. 내가 C++ 헤더 파일과 같이이 생성자
- 5. 오버로드 된 생성자 간 모호성
- 6. 봄 오버로드 된 생성자 주입
- 7. 오버로드 "기본"생성자 또는 "이"생성자?
- 8. 자바 스크립트 : 내가 생성자
- 9. mocking을위한 생성자 오버로드 오류
- 10. 왜 생성자
- 11. vb.net 추상 클래스의 오버로드 된 생성자
- 12. Cython 및 오버로드 된 C++ 생성자
- 13. 내 창문에서 나는 생성자가 오버로드 된 생성자
- 14. 는 생성자 부스트 오버로드 :: shared_ptr의
- 15. MVC : 조건부로 오버로드 된 생성자 호출
- 16. null 인수가있는 오버로드 된 생성자 호출
- 17. 자바 내가 (UJMP 패키지에서) 클래스에서 두 개의 오버로드 된 생성자 메소드를 가지고
- 18. "날조"자바 스크립트 생성자
- 19. Ninject에 생성자 매개 변수 나는이 상황
- 20. 생성자
- 21. C++로 생성자 생성자
- 22. 생성자
- 23. 자바 스크립트 생성자
- 24. 생성자
- 25. C++ : 클래스 오버로드 생성자 - 단일 변수?
- 26. 자바 생성자 상속
- 27. 내가 C에서 복사 생성자 ++
- 28. 생성자 코드에서 두 번
- 29. 생성자
- 30. C# .NET 생성자 오버로드 참조 문제
arraylist의 일반적인 유형은 무엇인가? –
설명하고 게시 한 내용은 의도 한대로 작동합니다. 실제로 생성자를 호출하는 코드는 무엇입니까? – Affe