![](/img/trans.png)
[英]java.lang.UnsupportedOperationException JavaFX ArrayList<String> to ObservableList<StringProperty>
[英]java.lang.UnsupportedOperationException with ArrayList()
我有一個像這樣的 class
@Getter
public class MyClass {
private Collection<String> headers;
public myConfig(DownloadRequest downloadRequest) {
this.headers = downloadRequest.getHeaders() == null ? new ArrayList() : downloadRequest.getHeaders();
}
}
當我運行它時,它給了我java.lang.UnsupportedOperationException
。
當我在另一個 function 中使用標頭並執行getHeaders().clear()
時,我收到此錯誤。
downloadRequest.getHeaders()
的返回類型是Collection<String>
我無法弄清楚我可以將標題投射到什么位置。
I keep getting different Exceptions as I change my code, like UnsupportedOperationException
and java.lang.ClassCastException: java.util.Arrays$ArrayList incompatible with java.util.ArrayList
, when I change the code to something else, trying out other StackOverflow solutions like this - 為什么在嘗試從列表中刪除元素時會收到 UnsupportedOperationException? .
我剛剛開始研究 Java,過去一直在研究 python 和 nodejs。
任何幫助表示贊賞。
問題在於, 文檔中提到的Collection#clear()
是可選操作,並非所有實現都需要支持它。 如果他們不這樣做,他們可以拋出UnsupportedOperationException
。 在您的情況下,從downloadRequest.getHeaders()
返回的列表顯然是一個不可修改的集合,不支持此操作。
如果是這樣,則對其調用clear()
將從downloadRequest
中刪除所有標頭。 這就是你想要達到的目標嗎? 可能不是。 如果是,那么應該有一個類似downloadRequest.clearHeaders()
的方法。
要解決此問題,您可以將不可修改集合中的元素復制到例如ArrayList
:
new ArrayList<>(downloadRequest.getHeaders())
這會將原始容器中的元素復制到新的可修改ArrayList
中,然后您可以隨意修改它。
Also note you're java.util.Arrays$ArrayList
which is named ArrayList
, but it is not java.util.ArrayList
. 這是從Arrays.asList(...)
返回的不可調整大小的集合,它也不支持clear()
。
downloadRequest.getHeaders()
方法可能返回一個只讀集合,因此不支持.clear()
您可以使用ArrayList
來包裝它並獲得可寫訪問的結構
// private list<String> headers;
Collection<String> headers = downloadRequest.getHeaders();
this.headers = headers == null ? new ArrayList<>() : new ArrayList<>(headers) ;
我認為您在執行 new ArrayList() 時可能使用了錯誤的 ArrayList class
From your ClassCastException you are using: java.util.Arrays$ArrayList, which is a nested class of the Arrays class and is immutable.
檢查您的導入:您應該使用 java.util.ArrayList。
編輯:沒關系這個嵌套的 class 是私有的; 以前的答案可能是正確的,返回的集合必須是不可變的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.