Могу ли я перегрузить переменные в Java? - PullRequest
6 голосов
/ 24 июля 2010

Я пишу класс для представления матрицы. Я хочу, чтобы это выглядело примерно так:

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
}

Это юридический код, или мне нужно иметь разные имена переменных в зависимости от типов данных, содержащихся в их матрице?

Ответы [ 3 ]

12 голосов
/ 24 июля 2010

Вы не можете перегружать переменные.При вашем подходе вы должны дать им другое имя, а затем перегрузить метод getMatrix для разных типов.

Лучшим подходом является использование Java Generics:

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

и затем создание объектовлюбых типов, которые вы хотите: Matrix<Integer>, Matrix<Double> и т. д.

1 голос
/ 24 июля 2010

То, что вы показали, не является допустимым кодом Java. Подход, который вы предлагаете (разные имена), сработал бы, или вы могли бы воспользоваться объектной системой Java и использовать коробочные значения (например, член класса является просто объектом) или обобщенные значения, чтобы тип был параметром.

1 голос
/ 24 июля 2010

Я думаю, что вы ищете Java Generics, стандартную функцию Java начиная с Java 5.

Идея состоит в том, что у вас будет общий класс Matrix, который может быть специализирован для любого типа, который вам нужен.

Существует множество учебных пособий, например: здесь

...