java integer long 转换_java - 将Integer转换为Long

java - 将Integer转换为Long

我需要使用反射来获取字段的值。 碰巧我并不总是确定该字段的数据类型是什么。 为此,为了避免一些代码重复,我创建了以下方法:

@SuppressWarnings("unchecked")

private static 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个解决方案

113 votes

只是:

Integer i = 7;

Long l = new Long(i);

vahid kh answered 2019-08-13T04:30:29Z

79 votes

不,您不能将Integer转换为Long,即使您可以从int转换为long.对于已知为数字且您想获得长值的单个值,您可以使用:

Number tmp = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);

Long value1 = tmp.longValue();

对于阵列,它会更棘手......

Jon Skeet answered 2019-08-13T04:30:10Z

42 votes

Integer i = 5; //example

Long l = Long.valueOf(i.longValue());

这样可以避免转换为String时的性能损失。 Integer中的longValue()方法只是int值的强制转换。 Long.valueOf()方法为vm提供了使用缓存值的机会。

Rich MacDonald answered 2019-08-13T04:30:56Z

18 votes

奇怪的是,我发现如果你从一个字符串解析它是有效的。

int i = 0;

Long l = Long.parseLong(String.valueOf(i));

int back = Integer.parseInt(String.valueOf(l));

赢得。

Anon answered 2019-08-13T04:31:29Z

7 votes

通过添加' L'直接将整数转换为long。 到整数结束。

Long i = 1234L;

Jeff Johny answered 2019-08-13T04:31:55Z

6 votes

将整数转换为长非常简单且有很多方法可以转换它

例1

new Long(your_integer);

例2

Long.valueOf(your_integer);

例3

Long a = 12345L;

例4

如果您已将int类型化为Integer,则可以执行以下操作:

Integer y = 12;

long x = y.longValue();

Naresh Kumar answered 2019-08-13T04:32:41Z

5 votes

如果Integer不为null

Integer i;

Long long = Long.valueOf(i);

valueOf将自动强制转换为new。

使用valueOf而不是new允许编译器或JVM缓存此值(如果它很小),从而产生更快的代码。

lostintranslation answered 2019-08-13T04:33:22Z

4 votes

((Number) intOrLongOrSomewhat).longValue()

cingulata answered 2019-08-13T04:33:41Z

1 votes

如果您知道Integer不是NULL,则可以这样做:

Integer intVal = 1;

Long longVal = (long) (int) intVal

Steven Spungin answered 2019-08-13T04:34:08Z

1 votes

new Long(Integer.longValue());

要么

new Long(Integer.toString());

Pavlo Zvarych answered 2019-08-13T04:34:29Z

1 votes

从int变量到long类型的解析器包含在Integer类中。 这是一个例子:

int n=10;

long n_long=Integer.toUnsignedLong(n);

您可以轻松使用此内置函数来创建从int解析为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;

}

Bremsstrahlung answered 2019-08-13T04:35:04Z

0 votes

这是无效的

Number tmp = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);

Long value1 = tmp == null ? null : tmp.longValue();

adkisson answered 2019-08-13T04:35:30Z

-1 votes

如果是Long类型的List,则将L添加到每个Integer值的末尾

List list = new ArrayList();

list = Arrays.asList(1L, 2L, 3L, 4L);

Joydeep Dutta answered 2019-08-13T04:35:58Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值