2012-07-16 3 views
2

내 코드는 자바 제네릭 작동하지 않습니다 : -바이트 클래스는

class abc<T> { 
    T a, b; 
    abc(T p, T q) { 
        a = p; 
        b = q; 
    } 
    void disp() { 
        System.out.println("\na = " + a); 
        System.out.println("b = " + b); 
        System.out.println("a/b is of class type : " + a.getClass().getName()); 
    } 
} 

class temp { 
    public static void main(String...args) { 
        abc<Integer> a1; 
        a1 = new abc <Integer>(11, 22); 
        abc<Byte> a2 = new abc <Byte>(50,5); 
        a1.disp(); 
        a2.disp(); 
    } 
} 

출력 : -

temp.java:23: cannot find symbol 
symbol : constructor abc(int,int) 
location: class abc<java.lang.Byte> 
      abc <Byte> a2 = new abc <Byte> (50,5); 
          ^
1 error 

이 질문에 저를 도와주세요. 나는 자바를 처음 사용하므로 제네릭에 대해 배울 수있다.

이 코드에서는 정수, 부동, Double, String을 모두 사용하고 있지만 Byte 클래스에 도달하면 컴파일러에서 오류가 발생합니다.

+0

Java에 오신 것을 환영합니다. 클래스 이름에 대한 Java 규약은 대문자로 시작하므로 'Abc'입니다. 이렇게하면 다른 사람들이 코드 –

답변

6

어때? 당신이 숫자 리터럴로 제공

abc <Byte> a2 = new abc <Byte> ((byte)50, (byte)5); 

매개 변수는 정수형이고, 그 자동으로 java.lang.Integer에에 박스하고 대응하는 방법은 초기에 발견되지 않는 이유를 명시 적으로 리터럴 타입이다라고하지 않는 한 그건 바이트.

+0

오하이오를 읽는 것이 더 쉬워집니다. 문제는 고맙습니다. .... 고맙습니다. ....-) –