2011-01-31 6 views
5

List<String>은 작동 여부와 상관없이 List<int>과 호환되지 않습니다. 나는 항상 이것에 대해 궁금해했다.<String>은 어떤 작업을 수행합니까?

+1

무엇이 포함 되든 없든? String은 클래스이고 int는 기본 유형이기 때문일 수 있습니다. – Raynos

+0

유무에 관계없이? 3 초 늦었습니다 ^^ –

+2

http://en.wikipedia.org/wiki/Generics_in_Java –

답변

2

목록 (및 기타 모음)은 기본 유형이 아닌 객체 만 보관할 수 있습니다. 따라서 List<Integer>은 사용할 수 있지만 List<int>은 사용할 수 없습니다. String도 개체입니다. 그것이 그것이 작동하는 이유입니다.

ListList<String>의 차이점 : 컴파일하는 동안에만 차이가 있습니다. 런타임시 두리스트 모두 동일합니다.

+0

고마워요. 그래서 그냥 String 객체 유형으로 변환합니다. –

+0

@CoolBeans : 그건 의미가 없습니다. 제네릭을 사용하는 경우 캐스트가 필요하지 않습니다. 그게 전부 요점입니다. 컴파일러는 ClassCastExceptions가 없다는 것을 타입 체크하여 캐스트와 * guarantee *를 삽입합니다. 그리고 ClassCastException을 얻을 수있는 유일한 방법은 캐스트를하는 것입니다. – EJP

+0

@EJP : 네 말이 맞아. 내 의견은 거꾸로되었습니다. 나는 당신이하지 말아야한다고 말하고자했다 List some = new ArrayList <>(); 유형을 지정하지 않고 (일반 여부). 내 의견을 삭제하겠습니다. 감사!!! – CoolBeans

5

기본 유형 (byte, short, int, etc)을 사용할 수 없습니다. 당신은이 경우, 주조의이 유형은 제네릭이라고 Integer

List<Integer> 

인 래퍼 형식을 사용해야합니다, 당신은 그들 here에 대한 자세한 학습을 ​​시작할 수 있습니다.

3

List<int>은 Java generics가 기본 유형 (객체 또는 하위 클래스, 예 : Integer)을 처리하지 않기 때문에 작동하지 않습니다. generic 클래스를 사용할 때는 type 매개 변수를 지정할 필요가 없지만 컴파일러에서 경고를 표시하므로 모든 유형 캐스팅 (잠재 처리 가능 포함)을 비롯한 모든 유형 캐스팅을 처리해야합니다.

관련 문제