我有一個名爲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();
你有很長的對象結束,但與自動裝箱你可以使用它幾乎像一個原始的長。
另一種選擇是使用泛型:
Iterator<Long> itr = val.iterator();
Long a = itr.next();
嘗試:long a = ((Long) itr.next()).longValue();
這比需要更囉嗦 - 請參閱提到自動裝箱的其他答案。 – crazyscot 2010-02-28 13:51:44
@crazyscot:從OP的代碼中,我認爲他使用的是比Java 5更早的Java版本。 – missingfaktor 2010-02-28 13:52:42
我有我從Flex客戶端獲取對象的數組,
有時號碼可以通過Java作爲int和有時長達解釋,
所以要解決這個問題,我使用 '的toString()' 函數如下:
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(); %>
,後來用我的對象Ÿ像<%= Y%>因爲我們會在小腳本使用任何其他Java變量。
Number
類可用於克服數字數據類型轉換。
在這種情況下,下面的代碼可能會被使用:
long a = ((Number)itr.next()).longValue();
我準備下面的實施例:
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());
控制檯輸出將是:
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
在Hashtable的類型也不能長久 - 你一定是指龍。 – 2010-02-28 14:34:01