मान लीजिए दो सूचियों के प्रसंस्करण के लिए मैं इस तरह एक सरल विधि है:जावा जेनेरिक्स: दो पैरामीटर
public static <B> void foo(List<B> list1, List<B> list2) {
}
और लगता है मैं इसे इस तरह कॉल करना चाहते हैं:
foo(ImmutableList.of(), ImmutableList.of(1));
यह जीता संकलित नहीं करें, क्योंकि javac
यह समझने के लिए पर्याप्त नहीं है कि मैं इंटीग्रर्स की दो सूचियां बनाने की कोशिश कर रहा था। इसके बजाय, मैं लिखने के लिए है:
foo(ImmutableList.<Integer>of(), ImmutableList.of(1));
मैं कैसे foo
की घोषणा पहले संस्करण दूसरा एक के रूप में भी काम करने के लिए अनुमति देने के लिए बदलना चाहिए?
बहुत यकीन है कि यह 'foo()' की घोषणा को बदलकर नहीं किया जा सकता है। –
असल में, यह 'जावैक' का मामला पर्याप्त नहीं है, यह आपके वास्तविक अर्थ है कि आप 'ImmutableList.of() 'से क्या मतलब रखते हैं। क्या होगा यदि '()' खाली सूची नहीं लौटा, लेकिन डिफ़ॉल्ट कन्स्ट्रक्टर के साथ बनाई गई 5 वस्तुओं से भरा एक सूची? यह केवल '() 'का आंतरिक है जो आपको बताता है कि यह मामला नहीं है, और यदि ऐसा हुआ तो' foo 'को' ऑब्जेक्ट 'की एक सूची और' इंटेगर 'की एक सूची मिल जाएगी। –