2012-04-08 17 views
16

यह एक सूची वस्तु बट में मुझे काट रहा है ..मैं एक सूची में तत्व जोड़ने में असमर्थ हूं? UnsupportedOperationException

किसी भी समय मैं यह करने के लिए एक तत्व जोड़ने का प्रयास करते हैं, यह पैदा करता है यह:

Caused by: java.lang.UnsupportedOperationException 
     at java.util.AbstractList.add(AbstractList.java:148) 
     at java.util.AbstractList.add(AbstractList.java:108) 

त्रुटि उत्पादन लाइन, नगण्य है लेकिन यहां यह वैसे भी है:

AdventureLobbies.players.add(args[0].toLowerCase()); 

क्या मुझे इसे स्थिर रूप से एक्सेस नहीं करना चाहिए?

चर का वास्तविक घोषणा:

AdventureLobbies.players = Arrays.asList(rs.getString("players").toLowerCase().split(","));

कोई भी विचार? Google पर कुछ भी नहीं मिल रहा है जो सार्थक है।

+1

कृपया हमें 'AdventureLobbies.players' के लिए घोषणा दिखा। –

+2

मैं दूसरा @ किर्कवॉल का सुझाव। अगर 'AdventureLobbies.players' एक अपरिवर्तनीय सूची है, तो मुझे आश्चर्य नहीं होगा, जो [संग्रह .unmodifiableList] से वापस आ गया हो सकता है (http://docs.oracle.com/javase/6/docs/api/java/util /Collections.html#unmodifiableList(java.util.List)) या एक और तरीका जो एक ही चीज़ को पूरा करता है। –

+0

पिछली टिप्पणियों के साथ सहमत - हमें वस्तु के प्रकार को जानने के बिना (इसलिए हमें घोषणा क्यों देखना है, या विधि सूची जहां आपको यह सूची मिली है), यह जानना मुश्किल है कि यह क्यों हो रहा है, हालांकि अपरिवर्तनीय सूची एक अच्छा शिक्षित अनुमान है। – jefflunt

उत्तर

37

Arrays.asList() आपको एक अपरिवर्तनीय सूची वापस दे देगा, और यही कारण है कि आपका जोड़ विफल हो रहा है। साथ सूची बनाने का प्रयास करें:

आपकी सूची, निश्चित आकार है "निर्दिष्ट सरणी द्वारा समर्थित एक निश्चित-आकार सूची रिटर्न" यह अर्थ

AdventureLobbies.players = new ArrayList(Arrays.asList(rs.getString("players").toLowerCase().split(","))); 
5

जावा डॉक्स कहना asList @SafeVarargs public static <T> List<T> asList(T... a) नहीं कर सकते बढ़ो या सिकुड़ें और जब आप जोड़ते हैं, तो यह एक असमर्थित ऑपरेशन अपवाद

0

यह अपवाद उन वस्तुओं तक पहुंचने से बहुत परिचित है जो एक्सेस के अनुसार एक्सेस की अनुमति नहीं देंगे जावा भाषा नियमों के अपरिवर्तनीय वस्तुओं तक पहुँचने, इसलिए इस तरह के बजाय निम्नलिखित तरीके से दृष्टांत:

AdventureLobbies.players = new ArrayList(Arrays. 
asList(rs.getString("players").toLowerCase().split(","))); // Perfectly done 
संबंधित मुद्दे