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

标签 java

我想在 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/

相关文章:

java.io.EOFException : Unexpected end of ZLIB input stream reading gzip encoded website

java - boolean 类型序列化和反序列化单元测试失败

JAVA: NamedQuery 字符串问题

java - 将字节显示为无符号

java.sql.SQLException : Invalid argument value: java. io.NotSerializableException 异常

java - 从套接字连接发送和接收字节

java - 为什么不调用 PostConstruct?

java - 使用输出流打印 Java servlet 中的变量

java - 如何在linux中设置servlet-api.jar文件的类路径

java.io.FileNotFoundException : [WEB-INF/spring-servlet. xml] 无法打开,因为它不存在