Spring MVC पर अवधारणाओं को समझने की कोशिश करने के बाद, मैं Collection<? extends Book>
अभिव्यक्ति में आया जो मैंने पहले कभी नहीं देखा है। मैंने इसे अपने आप समझने की कोशिश की है, लेकिन मुझे Collection<? extends Book>
और Collection<Book>
का उपयोग करने के बीच कोई अंतर नहीं दिख रहा है। मैं अनुमान लगा रहा था कि इसे केवल पुस्तक के विस्तार की अनुमति है, लेकिन यह पुस्तक के लिए भी अनुमति देता है। तो उस खरोंच। मैंने Google का उपयोग करने का प्रयास किया है, लेकिन तब से? गूगल में वाइल्डकार्ड है, यह खोजना लगभग असंभव बनाता है। मैंने जवाब के लिए स्टैक ओवरफ्लो खोजा है, लेकिन इसके बारे में सभी प्रश्न (जैसे List<? extends MyType> और <? extends > Java syntax) पहले से ही Collection<? extends T>
का ज्ञान मानते हैं।संग्रह <? extends T> बनाम संग्रह <T>
import java.util.ArrayList;
import java.util.Collection;
public class Book {
public static void main(String[] args) {
BookCase bookCase1 = new BookCase();
BookCase bookCase2 = new BookCase(bookCase1);
}
}
class BookCase extends ArrayList<Book> {
public BookCase() {
}
//acts same as public BookCase(Collection<Book> c) {
public BookCase(Collection<? extends Book> c) {
super(c);
}
}
<? extends T>
क्या करता है: यहाँ कोड है कि शुरू में मेरी रुचि intrigued गया है? <T>
से यह अलग कैसे है?
संपादित करें:
फॉलोअप प्रश्न: BookCase extends ArrayList<Book>
मतलब यह है कि BookCase
फैली Book
?
public class Test {
public static void main(String[] args) {
BookCase bookCase1 = new BookCase();
BookCase bookCase2 = new BookCase(bookCase1);
List<FictionBook> fictionBooks = new ArrayList<>();
BookCase bookCase3 = new BookCase(fictionBooks);
}
}
class Book {}
class FictionBook extends Book {}
class BookCase extends ArrayList<Book> {
public BookCase() {
}
//does not act same as public BookCase(Collection<Book> c) {
public BookCase(Collection<? extends Book> c) {
super(c);
}
}
कि कोड को संकलित करता है:
एक 'संग्रह' एक संग्रह है पुस्तक> 'लेकिन संग्रह नहीं 'संग्रह ' बढ़ाता है। –
immibis
इस तरह के टाइम्स मेरी इच्छा है कि मैं कई उत्तरों को हरा चेकमार्क कर सकता हूं। विशेष रूप से मकोटो और एडम के जवाब। हालांकि सभी उत्तर उपयोगी थे, विशेष रूप से उन लोगों ने मुझे इसे समझने में मदद की। तो यदि आप इस प्रश्न का उत्तर ढूंढ रहे हैं, तो मेरा सुझाव है कि आप उन दोनों को कम से कम टिप्पणियों सहित पढ़ें। सबको धन्यवाद!! – Evorlor