Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在泛型类中传递int数组_Java_Generics - Fatal编程技术网

Java 在泛型类中传递int数组

Java 在泛型类中传递int数组,java,generics,Java,Generics,创建泛型类对象时,为什么必须传递Integer类型的数组而不是int类型的数组?如果类型化参数只能是引用类型,那么为什么传递int变量有效,而传递int数组无效 class GenericA<T extends Number> { T arr[]; GenericA(T o[]) { arr = o; } double average() { double sum = 0; for (int i =

创建泛型类对象时,为什么必须传递Integer类型的数组而不是int类型的数组?如果类型化参数只能是引用类型,那么为什么传递int变量有效,而传递int数组无效

class GenericA<T extends Number> {
    T arr[];

    GenericA(T o[]) {
        arr = o;
    }

    double average() {
        double sum = 0;
        for (int i = 0; i < arr.length; i++)
            sum = sum + arr[i].doubleValue();

        double average1 = sum / arr.length;

        //System.out.println("the average is" +average);
        return average1;
    }

    boolean sameAvg(GenericA<?> ob) {
        if (average() == ob.average())
            return true;
        return false;
    }
}

class GenericB {
    public static void main(String[] args) {
        Integer inum[] = {1, 2, 3, 4, 5}; //this cannot be int
        Double inum1[] = {1.0, 2.0, 3.0, 4.0, 5.0}; //cannot be double

        GenericA<Integer> ob = new GenericA<Integer>(inum);
        GenericA<Double> ob1 = new GenericA<Double>(inum1);

        boolean a = ob.sameAvg(ob1);
        System.out.println(a);
    }
}
类泛型{
T-arr[];
一般性(T o[]{
arr=o;
}
双倍平均数(){
双和=0;
对于(int i=0;i
由于自动装箱,可以在需要
整数的位置传递
int
变量


但是,由于原语类型数组没有自动装箱功能,因此不可能将
int[]
传递到需要
Integer[]
的位置。

由于自动装箱功能,可以将
int
变量传递到需要
Integer
的位置


但是,由于基本类型数组没有自动装箱功能,因此不可能将
int[]
传递到需要
Integer[]
的位置。

Java泛型不支持基本类型(例如
int
)的事实是由于JVM的实现。基本上,它们不像C中那样是真正的泛型-有关类型的信息在运行时丢失(搜索
类型擦除问题
)。因此Java泛型基本上是在引擎盖下的
对象
之间进行强制转换

例如:

List<Integer> l = new List<Integer>();
...
Integer i = l.get(0);

运行时。

Java泛型不支持原语(例如,
int
)的事实是由于JVM的实现。基本上,它们不像C中那样是真正的泛型-有关类型的信息在运行时丢失(搜索
类型擦除问题
)。因此Java泛型基本上是在引擎盖下的
对象
之间进行强制转换

例如:

List<Integer> l = new List<Integer>();
...
Integer i = l.get(0);

<>运行时.< /p>请正确地格式化代码。这与C++有什么关系?请正确地格式化代码。这与C++有什么关系?你能告诉我为什么int[]在java中不是自动装箱的吗?很酷,谢谢。您能告诉我为什么int[]在java中不是自动装箱的吗?