2011-03-15 1 views
1
public static void main(String args[]) 
{ 

    int[] intarray = {1, 3, 6, 8, 2, 6};   
    String[] names = {"String1", "String2", "String3", "String4", "String5", "String6"}; 

    printMe(intarray); 

} 

public static <T> void printMe(T[] i){ 
    for(T x: i) 
    { 
     System.out.println(x); 
    } 

} 

이 코드를 컴파일하면이 오류가 발생하는 이유는 무엇입니까?int []를 T []가 걸리는 일반 메서드에 전달

The method printMe(T[]) is not applicable for the arguments (int[]) 

내가 printMe(names)이면 작동합니다.

+0

가능한 정수 [Java에서 int \ [\]를 Integer \ [\]로 변환하는 방법 "(http://stackoverflow.com/questions/880581/how-to-convert-int-to-integer- in-java) – finnw

+0

관련 항목 : http://stackoverflow.com/questions/1467913/arrays-aslist-not-working-as-it-should – finnw

답변

4

int하지 않는 Integer의 그것의 배열, 그이

+0

감사합니다. 하지만 int와 Integer의 차이점은 무엇입니까? Integer는 시스템에 의해'Integer Object'로 정의되어 있습니까 (정의하지 않았으므로)? –

+0

'int'는 원시 데이터 형식입니다. 여기서 Integer는 클래스 –

+1

입니다. Integer는 ['java.lang.Integer']입니다. (http://download.oracle.com/javase/6/docs/api/java/ lang/Integer.html) – asgs

1

간단한 이상의 클래스를 기대 때문입니다. 제네릭은 Object 기반 데이터 유형을위한 것이지 primitives을위한 것이 아닙니다.

1

심플. Generics는 객체 기반 데이터 유형을위한 것이지 원시 데이터를위한 것이 아닙니다. 문자열 배열의 경우 객체 유형으로 타입 캐스팅합니다. int 배열이 자동으로 객체 유형에 캐스트되지 않는 경우 명시 적으로 포함하거나 Integer로 만드는 또 다른 메소드입니다.

관련 문제