在不重载的情况下组合Java函数

在不重载的情况下组合Java函数,java,function,overloading,Java,Function,Overloading,如何将这两个函数结合起来以提高代码的效率?我目前只是重载函数,以允许接受整数和字符串作为参数 private void flushGrid(int grid[][], int replacement) { for(int x=0;x<grid.length;x++) { for(int y=0;y<grid[0].length;y++) { grid[x][y] = replacement;

如何将这两个函数结合起来以提高代码的效率?我目前只是重载函数,以允许接受整数和字符串作为参数

private void flushGrid(int grid[][], int replacement) {
        for(int x=0;x<grid.length;x++) {
            for(int y=0;y<grid[0].length;y++) {
                grid[x][y] = replacement;
            }
        }
    }

private void flushGrid(String grid[][], String replacement) {
    for(int x=0;x<grid.length;x++) {
        for(int y=0;y<grid[0].length;y++) {
           grid[x][y] = replacement;
        }
    }
}
private void flushGrid(整数网格[][],整数替换){

对于(intx=0;x,您可以使您的方法在类型
T
上通用

private <T> void flushGrid(T grid[][], T replacement) {
    for (int x = 0; x < grid.length; x++) {
        for (int y = 0; y < grid[0].length; y++) {
            grid[x][y] = replacement;
        }
    }
}
private void flushGrid(T网格[],T替换){
对于(int x=0;x

它可以与
String
Integer
或任何其他引用类型(但不包括
int
long
double
)一起使用。

您可以使您的方法在类型
T
上具有泛型

private <T> void flushGrid(T grid[][], T replacement) {
    for (int x = 0; x < grid.length; x++) {
        for (int y = 0; y < grid[0].length; y++) {
            grid[x][y] = replacement;
        }
    }
}
private void flushGrid(T网格[],T替换){
对于(int x=0;x

这将与
String
Integer
或任何其他引用类型(但不是像
int
long
double
)一起使用。

结合这两种方法不会使它更简单或更有效,但您可以做到

private void flushGrid(Object[] grid, Object replacement) {
    for (int x = 0; x < grid.length; x++) {
        for (int y = 0; y < Array.getLength(grid[0]); y++) {
            Array.set(grid[x], y, replacement);
        }
    }
}
private void flushGrid(对象[]网格,对象替换){
对于(int x=0;x

请注意,这适用于基本数组和引用数组。

结合这两种方法不会使其更简单或更有效,但您可以做到这一点

private void flushGrid(Object[] grid, Object replacement) {
    for (int x = 0; x < grid.length; x++) {
        for (int y = 0; y < Array.getLength(grid[0]); y++) {
            Array.set(grid[x], y, replacement);
        }
    }
}
private void flushGrid(对象[]网格,对象替换){
对于(int x=0;x


注意这适用于基本数组和引用数组。

基本数组不支持泛型,至少在Java 10之前不支持泛型。这是否意味着类必须是泛型的?@Xoce웃Пepeúpa不,您可以在不使类泛型的情况下使方法泛型。这不适用于第一个示例中的
t
=
int
。它只适用于第二个示例,该示例更好,但不会简化任何内容。原语不支持泛型,至少在Java 10之前不支持。这是否意味着不支持类必须是泛型的?@Xoce웃Пepeúpa不,你可以使一个方法泛型,而不使类泛型。这对第一个例子中的
t
=
int
不起作用。它只能作为第二个例子的替代品,第二个例子更好,但不能简化任何事情。你不能,真的。你不能,真的。你可能是想写
对象[][]网格
?或
(对象[])网格[0]。长度
?甚至
(对象[])网格[x]。长度
?@radoh我应该更改它。如果它是一个基本数组,你不能将其强制转换为
对象[]
。哦,好吧,我不知道
数组。*
方法:)@radoh加上
数组
方法:PYeah,我知道这些;)你可能想写
对象[][]网格
?或
(对象[])网格[0]。长度
?甚至
(对象[])网格[x]。长度
?@radoh我应该更改它。你不能将它强制转换为
对象[]
如果它是一个基本数组。哦,好吧,很好,我不知道
数组。*
方法:)@radoh加上
数组
方法:是的,我知道这些;)