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

请帮我解决这个问题。我是java新手,所以学习泛型。

在这段代码中,我使用了 Integer、Float、Double、String 都可以正常工作,但是当我进入 Byte 类时,编译器会抛出错误。

4

1 回答 1

6

这个怎么样?

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

您作为数字文字提供的参数是整数类型,并且这些参数会自动装箱到 java.lang.Integer,这就是为什么最初找不到相应方法的原因,除非您明确说明您的文字是字节类型。

于 2012-07-16T19:24:51.253 回答