Java中带泛型函数的整型/整型自动装箱查询

Java中带泛型函数的整型/整型自动装箱查询,java,generics,integer,int,autoboxing,Java,Generics,Integer,Int,Autoboxing,好的,我正在尝试用Java编写一个通用排序包(我正在学习一门算法课程,我认为这是一个很好的实践,无论是在算法方面还是在Java方面,因为我对该语言非常陌生)。无论如何,我认为最好的方法是创建一个包含多种排序方法的Sort类,如insertionSort,mergeSort等。如果您觉得有更好的方法,请告诉我,作为一个注释,因为我总是乐于接受编写更干净、更高效代码的建议 至于问题: 我有了主干结构,想先尝试编码insertionSort方法。然而,我试图传递一个整数数组,但遇到了一些问题。首先,对

好的,我正在尝试用Java编写一个通用排序包(我正在学习一门算法课程,我认为这是一个很好的实践,无论是在算法方面还是在Java方面,因为我对该语言非常陌生)。无论如何,我认为最好的方法是创建一个包含多种排序方法的
Sort
类,如
insertionSort
mergeSort
等。如果您觉得有更好的方法,请告诉我,作为一个注释,因为我总是乐于接受编写更干净、更高效代码的建议

至于问题:

我有了主干结构,想先尝试编码
insertionSort
方法。然而,我试图传递一个整数数组,但遇到了一些问题。首先,对于泛型,我理解您必须使用
,而不是
,但是由于某种原因,如果我创建一个数组,例如
int[]arr=new int[]{..}
,并将其传递给泛型,它将不起作用。如何在不使用
Integer[]arr=newinteger[]{..}
的情况下修复此问题?我的印象是编译器会自动将我的
int
框到
Integer

我的代码:

public class Sort<T> {
    public T[] insertionSort(T[] array) {
        // do some stuff
        return array;
    }

    public static void main(String[] args) {
        int[] orig = new int[]{1,35,3,2,4634,2,46,7,33,56};
        Sort<Integer> sorter = new Sort<Integer>();
        sorter.insertionSort(orig);
    }
}
公共类排序{
公共T[]插入排序(T[]数组){
//做点什么
返回数组;
}
公共静态void main(字符串[]args){
int[]orig=新int[]{1,35,3,24634,2,46,7,33,56};
分拣机=新分拣机();
分拣机插入分拣机(orig);
}
}
如何在不使用整数[]arr=新整数[]{..}的情况下修复此问题

你没有。这根本行不通

我的印象是编译器会自动将我的int转换成Integer

对于单个
int
Integer
值,它将。但是没有从
int[]
Integer[]
的转换。。。因此,再加上Java泛型中缺少原语支持,采用
T[]
的方法无法采用
int[]

有些第三方库具有转换方法,但它们总是创建一个新数组,而不是在现有数组上创建视图。(可以创建一个
列表
,该列表是对现有数组的一个视图,尽管
添加
操作显然会失败,使用
空值设置
操作也会失败。)

如何在不使用整数[]arr=新整数[]{..}的情况下修复此问题

你没有。这根本行不通

我的印象是编译器会自动将我的int转换成Integer

对于单个
int
Integer
值,它将。但是没有从
int[]
Integer[]
的转换。。。因此,再加上Java泛型中缺少原语支持,采用
T[]
的方法无法采用
int[]


有些第三方库具有转换方法,但它们总是创建一个新数组,而不是在现有数组上创建视图。(可以创建一个
列表
,该列表是对现有数组的一个视图,尽管
添加
操作显然会失败,就像
使用
null
值设置
操作一样。)

这是什么意思“它不工作”?你能告诉我们堆栈跟踪吗?我不关心排序算法,除非它是你代码的重要部分。我会使用
Collections.sort()
Arrays.sort()
。@PrR3我在IDE中收到一条警告,告诉我它不适用于int[],而只适用于Integer[]。Arnauddenoylle阅读了我的第一段,这是我自己的编程练习,既适用于Java实践,也适用于算法实践。这是什么意思“它不工作”?您能告诉我们堆栈跟踪吗?我不关心排序算法,除非它是您代码的重要部分。我将使用
Collections.sort()
Arrays.sort()
。@PrR3我在IDE中收到一条警告,告诉我它不适用于int[],而只适用于Integer[]@ArnaudDenoyelle阅读我的第一段,这是我自己的编程练习,包括Java实践和算法实践。
Java.utils.Arrays
包在排序
int[]时是如何工作的
?@Keir:它有一个单独的方法-就这么简单。我怀疑每个重载都有一个单独的-可能是自动生成的-实现。当然,有关详细信息,请参阅源代码。
java.utils.Arrays
包在排序
int[]时是如何工作的
?@Keir:它有一个单独的方法——就这么简单。我怀疑每个重载都有一个单独的——可能是自动生成的——实现。当然,有关详细信息,请参阅源代码。