Java Generics и числа - PullRequest
       19

Java Generics и числа

18 голосов
/ 18 мая 2009

Пытаясь понять, смогу ли я очистить часть своего математического кода, в основном матричного кода, я пытаюсь использовать некоторые Java Generics. У меня есть следующий метод:

private <T> T[][] zeroMatrix(int row, int col) {
    T[][] retVal = (T[][])new Object[row][col];
    for(int i = row; i < row; i++) {
        for(int j = col; j < col; j++) {
            retVal[i][j] = 0;
        }
    }
    return retVal;
}

Строка retVal [i] [j] = 0 - та, которая вызывает у меня головную боль. Цель этой строки - инициализировать массив с представлением T, равным 0. Я попытался сделать с ним все что угодно: (T определяется в классе как T расширяет Number)

retVal[i][j] = (T)0;
retVal[i][j] = new T(0);

Единственное, что работает, это

retVal[i][j] = (T)new Object(0);

Это не то, что я хочу.

Возможно ли это? Есть ли более простой способ представления матрицы NxM любого типа числа (включая потенциально BigDecimal), или я застрял?

Ответы [ 11 ]

0 голосов
/ 18 мая 2009

Использование erasure в Java для реализации универсальных типов означает, что у вас возникнут проблемы с созданием универсального типа.

Как насчет использования нуля для представления 0

retVal[i][j] = null;

Затем вы можете присвоить массиву любой тип, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...