2010-07-24 66 views
5

我正在写一个类来表示一个矩阵。我希望它看起来是这样的:我可以在Java中重载变量吗?

public class matrix { 
    private int[][] matrix; 
    private double[][] matrix; 
    //And so on and so forth so that the user can enter any primitive type and 
    //get a matrix of it 
} 

这是合法的代码,否则我就必须有基于自己的矩阵保存数据类型不同的变量名称?

+1

一些原因,为什么你不使用编译器找出? – EJP 2010-07-25 00:13:03

回答

11

您不能重载变量。用你的方法,你应该给他们不同的名字,然后为不同的类型重载getMatrix方法。

一个更好的办法是使用Java的泛型:

public class Matrix<T> { 
    private T[][] matrix; 
    public T getMatrix() {return matrix;} 
    ... 
} 

,然后创建你想要的任何类型的对象:Matrix<Integer>Matrix<Double>

+0

谢谢,这使我无需制作一百万种不同的构造函数和方法。另外,muy elegante! – 2010-07-24 21:22:57

1

我认为你正在寻找Java泛型,因为Java 5的

一个标准的Java功能的想法是,你将有可专门用于所需的任何类型的通用矩阵类。

有很多教程,例如:你有什么表示here

+1

请发表评论,而不是回答。 – danben 2010-07-24 15:27:12

1

是不合法的Java代码。你建议的方法(不同的名称)可以工作,或者你可以利用Java的对象系统,并使用盒装值(例如类成员只是一个对象)或泛型,例如类型是一个参数。