我有一个名为table
的哈希表,值类型为long
。我正在使用.values()
获取值。现在我想访问这些值。
Collection val = table.values();
Iterator itr = val.iterator();
long a = (long)itr.next();
但是当我尝试获取它时,它会给我一个错误,因为我无法将类型为object
的值转换为long
。我该如何解决这个问题?
我有一个名为table
的哈希表,值类型为long
。我正在使用.values()
获取值。现在我想访问这些值。
Collection val = table.values();
Iterator itr = val.iterator();
long a = (long)itr.next();
但是当我尝试获取它时,它会给我一个错误,因为我无法将类型为object
的值转换为long
。我该如何解决这个问题?
试试这个:
Long a = (Long)itr.next();
你最终将得到一个Long对象,但使用自动装箱(autoboxing),你几乎可以像使用原始的long类型一样使用它。
另一种选择是使用泛型:
Iterator<Long> itr = val.iterator();
Long a = itr.next();
Number
类可用于克服数字数据类型转换问题。
在这种情况下,可以使用以下代码:
long a = ((Number)itr.next()).longValue();
将
对象转换为
长整型示例-1
// preparing the example variables
Long l = new Long("1416313200307");
Object o = l;
// Long casting from an object by using `Number` class
System.out.print(((Number) o).longValue() );
控制台输出将会是:
1416313200307
Object
转换为 double
的示例 - 2
// preparing the example variables
double d = 0.11;
Object o = d;
// Double casting from an Object -that's a float number- by using `Number` class
System.out.print(((Number) o).doubleValue() + "\n");
控制台输出将会是:
0.11
Object
转换为 double
的例子 - 3
要小心这个简单的错误!如果使用doubleValue()
函数来转换浮点值,那么第一个值可能不等于最终值。
如下所示,0.11
!= 0.10999999940395355
。
// preparing the example variables
float f = 0.11f;
Object o = f;
// Double casting from an Object -that's a float number- by using `Number` class
System.out.print(((Number) o).doubleValue() + "\n");
控制台输出将会是:
0.10999999940395355
Object
转为 float
示例 - 4
// preparing the example variables
double f = 0.11;
Object o = f;
// Double casting from an Object -that's a float number- by using `Number` class
System.out.print(((Number) o).floatValue() + "\n");
控制台的输出将会是:
0.11
long a = ((Long) itr.next()).longValue();
public Object run(Object... args) {
final long uid = Long.valueOf(args[0].toString());
long value = Long.parseLong((String)request.getAttribute(""));
我遇到了同样的问题,但是在进行JSP编码时。上述关于Long和泛型的建议要么没有起作用,要么无法适应代码片段。
我不得不这样解决它(在JSP中):
<%Object y=itr.next(); %>
然后在脚本中像使用其他Java变量一样使用我的对象y,例如<%=y%>。