【问题标题】:How can i keep the same function with different argument type如何使用不同的参数类型保持相同的函数
【发布时间】:2020-05-21 14:29:58
【问题描述】:

先生 我开发了这个函数来显示矩阵。 我不想再写这个函数了,也许我有很多不同参数类型的矩阵。

private void displyMatrix(int matrix[][]) {
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[i].length; j++) {
            System.out.print(matrix[i][j] + " ");
        }
        System.out.println();
    }
}

如果我有另一个带有双参数的矩阵会发生什么? 我是否必须再次编写该函数,或者还有另一种方法。 谢谢

【问题讨论】:

  • 查看 Java 中的重载是什么。当然,你可以有很多方法用不同类型的参数做同样的事情。

标签: java arrays inheritance matrix overriding


【解决方案1】:

您可以在泛型的帮助下创建这样的方法。

public <T> void print(T[][] matrix) {
   for (int i = 0; i < matrix.length; i++) {
      for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
      }
      System.out.println();
   }
}

唯一的限制是,您需要使用包装类 Integer 而不是原始 int。

Integer[][] integers = new Integer[][]{ new Integer[] {1, 2}};

Double[][] doubles = new Double[][]{ new Double[] {1.0, 2.0}};

print(integers);
print(doubles);

【讨论】:

  • 您甚至可以使用&lt;T extends Number&gt; 确保T 是一个数值,因此它只能与Integer、Double 等一起使用:)
  • @NiziL 作为正在考虑的方法基本上是打印数据,只要没有特定于数字的操作,矩阵可以是任何东西(即自定义对象),应该可以没有边界。你怎么看?
  • 完全同意!我听说了矩阵,看到了int,并且直接在思考数学......我这边的推断太多了。
  • 非常感谢,这很有帮助,也许如果我从int更改为Integer,代码会很慢?大代码情况下
猜你喜欢
  • 2015-07-19
  • 2020-03-05
  • 2015-08-18
  • 2022-11-14
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多