Programing

정수를 Long으로 변환

lottogame 2020. 8. 18. 08:06
반응형

정수를 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);

문제는 내가 캐스트에 보이지 않을 수 있다는 것입니다 IntegerLong:

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

이것을 달성하는 더 좋은 방법이 있습니까?

Java 1.6을 사용하고 있습니다.


아니요, 에서 변환 할 수는 있지만 Integer전송할 수 없습니다 . 를 들어 개별 알려져있다 값이 숫자를 수하고 긴 값을 얻으려면, 당신은 사용할 수 있습니다 :Longintlong

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

반응형