Преобразование универсального аргумента в int в Java, при условии, что это число - PullRequest
4 голосов
/ 26 декабря 2008

Вот что я пытался сделать, в двух словах:

class example <T extends Number>
{
    private int function(T number)
    {
        int x = (int) number;
        ...
    }
    ...
}

По сути, я пытаюсь сделать так, чтобы T было числом, чтобы я мог преобразовать его в int внутри этой функции. Проблема в том, что я получаю ошибку «неискажаемых типов», поэтому я должен что-то делать не так.

Ответы [ 4 ]

4 голосов
/ 26 декабря 2008

Учитывая, что абстрактный класс Number является суперклассом классов * BigDecimal, BigInteger, * Byte, Double, Float, * Integer, Long и Short ...

если вы хотите иметь представление int, вам следует использовать функцию .intValue().

Если это то, что вы хотите сделать.

3 голосов
/ 26 декабря 2008

Для вашего примера, я не думаю, что вам нужны дженерики. Я думаю, что вы можете просто:

private int func(Number n) {
  return n.intValue();
}

Если вы пытаетесь что-то сделать с дженериками, я бы это сейчас снял и сначала заработал только что вышеперечисленное.

1 голос
/ 26 декабря 2008

Используйте

x=number.intValue();
0 голосов
/ 20 февраля 2019

Я знаю, что этот вопрос старый. Просто для практических целей (не рекомендуется в производстве) вы можете использовать класс-оболочку Integer вместо примитивного типа int.

int x = (Integer) number;

Смысл в том, что преобразование универсального типа в тип примитива вызовет ошибку, а класс-оболочка, такой как Number, BigInteger или Integer, будет более допустимым.

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