无法从类型对象转换为long

Moh*_*sal 16 java types casting long-integer

我有一个名为的哈希表table.类型值是long.我正在使用价值观.values().现在我想访问这些值.

Collection val = table.values();

Iterator itr = val.iterator();
long a  =   (long)itr.next();
Run Code Online (Sandbox Code Playgroud)

但是当我试图得到它时,它会给我错误,因为我无法从类型转换objectlong.我该怎么办呢?

Vin*_*nie 35

试试这个:

  Long a = (Long)itr.next();
Run Code Online (Sandbox Code Playgroud)

你最终得到一个Long对象但是使用自动装箱你可能会使用它几乎像一个原始的长.

另一个选择是使用泛型:

  Iterator<Long> itr = val.iterator();
  Long a = itr.next();
Run Code Online (Sandbox Code Playgroud)


efk*_*kan 7

Number class可用于克服数值数据类型转换.

在这种情况下,可能会使用以下代码:

long a = ((Number)itr.next()).longValue();
Run Code Online (Sandbox Code Playgroud)



我已经准备了下面的例子:

Object long 例子- 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() );
Run Code Online (Sandbox Code Playgroud)

控制台输出将是:

1416313200307
Run Code Online (Sandbox Code Playgroud)



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");
Run Code Online (Sandbox Code Playgroud)

控制台输出将是:

0.11
Run Code Online (Sandbox Code Playgroud)



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");
Run Code Online (Sandbox Code Playgroud)

控制台输出将是:

0.10999999940395355
Run Code Online (Sandbox Code Playgroud)



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");
Run Code Online (Sandbox Code Playgroud)

控制台输出将是:

0.11
Run Code Online (Sandbox Code Playgroud)