2015-06-05 27 views
0

我有一個java.lang.Object,我無法施放。在調試的時候,我注意到Object是一個不可修改的集合,所以我試圖將它轉換爲一個集合,但不起作用(ClassCastException)。相反,我試圖施放一個不可修改的集合

Set<SimpleUserBean> listOfSelectedItems = new HashSet<SimpleUserBean>(object) 

當然這是不可能的,但無論是因爲對HashSet中沒有這樣的構造。

我該如何解決這個問題?

+1

爲什麼你不能投它?當你使用'System.out.print(object.getClass()。getName())'和'System.out.println(object.getClass()。getTypeName())'時,輸出是什麼?您還可以使用'類 interfaces = object.getClass()。getInterfaces'並在運行時獲取對象的信息,以查看您可以投射哪種超類型以便簡化工作。 –

+0

您確定要將對象轉換爲Set 而不是某種具體的Set? – DJClayworth

回答

1

如果對象是java.util.Collections.UnmodifiableSet或其他任何實現Collection,那麼你應該可以做new HashSet<>((Collection) object)。這讓編譯器清楚你正在嘗試使用HashSet(Collection<? extends E> c)構造函數。

0

集listOfSelectedItems =新的HashSet(對象)

這是不可能的。這個怎麼樣。

Set<SimpleUserBean> listOfSelectedItems = new HashSet<SimpleUserBean>(); 
listOfSelectedItems.addAll((Collection)object); 
0

java.util.Collections.UnmodifiableSet轉換爲String arrays

用途:

object.getValue().toString().replace("[","").replace("]","").split(":") 

假設object.getValue()會給你java.util.Collections.UnmodifiableSet