繁体   English   中英

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

[英]Integer/ int autoboxing query with generic functions in Java

好的,所以我试图用Java编写一个通用的排序程序包(我正在学习算法课程,并且我认为这是一种很好的做法,无论是从算法的角度还是从Java的角度来说,都是Java的新手。 无论如何,我想做到这一点的最好办法是创建一个Sort与内多种排序方式,如类insertionSortmergeSort如果你觉得有这样做的更好的方法等,请让我知道作为一个评论,因为我总是对编写更干净,更高效的代码的建议持开放态度。

至于这个问题:

我的主干结构不完整,想先尝试对insertionSort方法进行编码。 但是,我尝试将其传递给整数数组,但遇到了一些问题。 首先,对于泛型,我理解您必须使用<Integer>而不是<int> ,但是由于某种原因,如果我创建一个数组,例如int[] arr = new int[]{..}并将其传递给通用它不起作用。 如何不使用Integer[] arr = new Integer[]{..}来解决此问题? 我的印象是编译器会自动将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);
    }
}

如何在不使用Integer [] arr = new Integer [] {..}的情况下解决此问题?

你不知道 这根本行不通。

我的印象是编译器会自动将int装箱为Integer?

对于单个intInteger值,它将是。 但是没有从int[]Integer[] ...因此,加上Java泛型中缺乏原始支持,采用T[]的方法根本不能采用int[]

有第三方库具有转换方法,但是它们总是将创建一个数组,而不是在现有数组上创建视图。 (有可能创建一个List<Integer> ,它是对现有数组的视图,尽管显然add操作必须失败,就像将操作setnull值一样。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM