gpt4 book ai didi

java - 使用泛型类型拥有通用方法

转载 作者:行者123 更新时间:2023-12-01 13:19:10 25 4
gpt4 key购买 nike

我想在 Java 中使用一个方法,该方法具有数组的给定列,它从主列中提取这些列。

我编写了以下代码:

public static String[][] extractCol(String[][] matrix, int[] col){


String [][] output = new String [matrix.length][col.length];
int con=0;
for (int i = 0; i < matrix.length; i++) {
con=-1;
for (int j = 0; j < col.length; j++) {
con++;
output[i][con]=matrix[i][col[j]];
}


}
return output;
}

但是,如果输入数据是 int data ,它就不起作用,所以我必须编写另一个方法来接受 int data 来做完全相同的事情。此外,如果我想再次获得 int 输出,我应该有另一种方法来生成相同的内容,但具有字符串格式。

因此,为了拥有满足所有不同输入和输出类型需求的函数,我应该编写和调用 4 个不同的方法。 JAVA 有没有办法合并所有这些,并有一个方法接受通用输入并生成通用输出?

最佳答案

您可以使用以下内容来定义通用输入和输出(带有但是)...

public static <T> T[][] extractCol(Class<T> componentType, T[][] matrix, int[] col) {
T[][] output = (T[][]) Array.newInstance(componentType, matrix.length, col.length);
...
}

但这仅适用于诸如Integer之类的对象输入和输出类型,但不适用于诸如int之类的基本类型(这可能使该解决方案对您来说毫无用处)用例),因为这使用了泛型,而 Java 中的泛型仅适用于对象。

如果您想支持基本类型,则必须定义单独的方法。

关于java - 使用泛型类型拥有通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com