मैं उत्सुक हूँ क्या है जब एक अस्थायी वर्ग से वस्तुओं का संग्रह लौटने एक बेहतर अभ्यास माना जाता है:जावा में एक आंतरिक संग्रह लौटने के लिए सबसे अच्छा अभ्यास क्या है?
public class Someclass {
public List<String> strings;
public add(String in){ strings.add(in); }
public remove(String in) { strings.remove(in); }
//THIS
public List<String> getStrings(){
return Collections.unmodifiableList(strings);
}
//OR THIS
public List<String> getStrings(){
return new ArrayList(strings);
}
}
मैं हमेशा एक Unmodifiable में आंतरिक संग्रह लपेटकर ग्रहण सबसे अच्छा तरीका था के बाद से मैं नहीं देखा एक प्रतिलिपि बनाने के ऊपरी हिस्से को लेने का एक कारण। हालांकि, यह मेरे लिए हुआ कि आंतरिक रूप से सूची में किए गए किसी भी बदलाव को क्लाइंट के सामने उजागर किया जाएगा जो मुझे खराब मानता है।
बाद दृष्टिकोण, नए ArrayList का उपयोग कर, या .clone का उपयोग कर(), सही दृष्टिकोण संगामिति मुद्दों को कम करना है। Collections.unmodifiableList() एक बहु थ्रेडेड वातावरण में संभव संगामिति मुद्दों बढ़ जाती है। –