Преобразование целого числа в длинное - PullRequest
98 голосов
/ 14 июля 2011

Мне нужно получить значение поля, используя отражение. Так получилось, что я не всегда уверен, какой тип данных у поля. Для этого и во избежание дублирования кода я создал следующий метод:

@SuppressWarnings("unchecked")
private static <T> T getValueByReflection(VarInfo var, Class<?> classUnderTest, Object runtimeInstance) throws Throwable {
  Field f = classUnderTest.getDeclaredField(processFieldName(var));
  f.setAccessible(true);
  T value = (T) f.get(runtimeInstance);

  return value;
}

И используйте этот метод как:

Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);

или

Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);

Проблема в том, что я не могу привести Integer к Long:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

Есть ли лучший способ добиться этого?

Я использую Java 1.6.

Ответы [ 13 ]

1 голос
/ 15 июня 2016
new Long(Integer.longValue());

или

new Long(Integer.toString());
0 голосов
/ 25 сентября 2018

Это нуль-сейф

Number tmp = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
Long value1 = tmp == null ? null : tmp.longValue();
0 голосов
/ 08 января 2018

В случае списка типа Long, добавляя L в конец каждого целочисленного значения

List<Long> list = new ArrayList<Long>();
list  = Arrays.asList(1L, 2L, 3L, 4L);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...