정수를 Long으로 변환
반사를 사용하여 필드의 값을 얻어야합니다. 필드의 데이터 유형이 무엇인지 항상 확신하지 못하는 경우가 발생합니다. 이를 위해 일부 코드 중복을 피하기 위해 다음 방법을 만들었습니다.
@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을 사용하고 있습니다.
아니요, 에서 로 변환 할 수는 있지만 Integer
로 전송할 수 없습니다 . 를 들어 개별 알려져있다 값이 숫자를 수하고 긴 값을 얻으려면, 당신은 사용할 수 있습니다 :Long
int
long
Number tmp = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
Long value1 = tmp.longValue();
배열의 경우 더 까다로울 것입니다 ...
간단히:
Integer i = 7;
Long l = new Long(i);
Integer i = 5; //example
Long l = Long.valueOf(i.longValue());
이렇게하면 문자열로 변환하는 성능 저하를 방지 할 수 있습니다. longValue()
Integer 의 메서드는 int 값의 캐스트입니다. 이 Long.valueOf()
메서드는 vm에게 캐시 된 값을 사용할 수있는 기회를 제공합니다.
이상하게도 문자열에서 구문 분석하면 작동한다는 것을 알았습니다.
int i = 0;
Long l = Long.parseLong(String.valueOf(i));
int back = Integer.parseInt(String.valueOf(l));
승리.
Integer 끝에 'L'을 추가하여 정수를 long으로 직접 변환합니다.
Long i = 1234L;
정수를 Long으로 변환하기 매우 간단하고 여러 가지 방법으로
예제 1
new Long(your_integer);
예 2
Long.valueOf(your_integer);
예제 3
Long a = 12345L;
예제 4
Integer로 입력 된 int가 이미있는 경우 다음을 수행 할 수 있습니다.
Integer y = 12;
long x = y.longValue();
Integer가 null이 아닌 경우
Integer i;
Long long = Long.valueOf(i);
i
자동으로 long
.
valueOf
대신 사용 new
하면 컴파일러 또는 JVM에 의해이 값 (작은 경우)을 캐싱 할 수 있으므로 코드가 더 빨라집니다.
((Number) intOrLongOrSomewhat).longValue()
If you know that the Integer is not NULL, you can simply do this:
Integer intVal = 1;
Long longVal = (long) (int) intVal
new Long(Integer.longValue());
or
new Long(Integer.toString());
A parser from int
variables to the long
type is included in the Integer
class. Here is an example:
int n=10;
long n_long=Integer.toUnsignedLong(n);
You can easily use this in-built function to create a method that parses from int
to long
:
public static long toLong(int i){
long l;
if (i<0){
l=-Integer.toUnsignedLong(Math.abs(i));
}
else{
l=Integer.toUnsignedLong(i);
}
return l;
}
This is null-safe
Number tmp = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
Long value1 = tmp == null ? null : tmp.longValue();
In case of a List of type Long, Adding L to end of each Integer value
List<Long> list = new ArrayList<Long>();
list = Arrays.asList(1L, 2L, 3L, 4L);
참고URL : https://stackoverflow.com/questions/6690745/converting-integer-to-long
'Programing' 카테고리의 다른 글
numpy 벡터에서 가장 빈번한 숫자 찾기 (0) | 2020.08.18 |
---|---|
Highcharts에서 제목과 부제목을 비활성화하는 방법이 있습니까? (0) | 2020.08.18 |
앵커 링크가 링크 된 위치보다 몇 픽셀 위로 이동하도록합니다. (0) | 2020.08.18 |
PowerShell : 전체 텍스트 파일 내용을 변수에 저장 (0) | 2020.08.18 |
Android에서 현재 메모리 사용량을 얻는 방법은 무엇입니까? (0) | 2020.08.18 |