Как конвертировать переменный тип номера в Double? - PullRequest
0 голосов
/ 26 марта 2019

A Hashmap содержит ключ со значением, которое может быть Integer или Double.

Это работает, если значение имеет тип Double, но не работает для типа Integer:

Double value = (Double) locationMap.get("key");

К сожалению, я не могу контролировать тип, так как это данные JSON, передаваемые с сервера. Очевидно, что даже если номер имеет тип double на стороне сервера (Javascript) перед передачей, но не имеет десятичных цифр, он будет интерпретирован как Integer где-то вдоль строки на стороне клиента (Java).

Какой кратчайший способ учесть возможное значение Integer и привести его к Double?

1 Ответ

3 голосов
/ 26 марта 2019

Предполагая, что вы знаете, что это Number (например, вы сначала тестировали с instanceof):

Double value = ((Number) locationMap.get("key")).doubleValue();

Это неэффективно, если число уже равно Double.Возможно, вы захотите определить метод, который будет обрабатывать это специально:

// Doesn't handle null.
Double toDouble(Number n) {
  return (n instanceof Double) ? (Double) n : Double.valueOf(n.doubleValue());
}

Double.valueOf выглядит избыточно, но необходимо, если используется условное выражение, чтобы избежать распаковки второго операнда ( смотри это ).

...