मैं सामान्य विधि का उपयोग कर में एक मुसीबत से मिलनेजावा में अन्य विधि पर जेनेरिक पैरामीटर के रूप में जेनेरिक ऑब्जेक्ट को कैसे पास किया जाए?
संकलित वर्ग:
public class Something<T> {
public static Something newInstance(Class<T> type){};
public <T> void doSomething(T input){};
}
और मेरे विधि है:
public <S> void doOtherThing(S input){
Something smt = Something.newInstance(input.getClass());
smt.doSomething(input); // Error here
}
यह संकलन समय पर त्रुटि मिली:
नहीं doSomething (टी) टी के लिए उपयुक्त विधि पर कब्जा नहीं किया जा सकता # 1 ओ एफ? java.lang.Object ... फैली
मैं एक चाल इस से बचने के लिए हो सकता है लगता है, कृपया मदद
आपका कोड संकलित नहीं करता है। कृपया सही स्रोत – bedrin
प्रदान करें यहां बहुत सारे मुद्दे हैं। सबसे पहले दो अलग 'टी' हैं। 'कुछ' '' '' 'कुछ 'वर्ग' वर्ग के समान नहीं है, क्योंकि 'doSomething' एक सामान्य विधि है जो अपना स्वयं का' टी 'घोषित करती है। आपको दो चर अलग-अलग नाम देना चाहिए, क्योंकि वे एक दूसरे से असंबंधित नहीं हैं। फिर तथ्य यह है कि 'कुछ करना' केवल पैरामीटर प्रकार के रूप में 'टी' का उपयोग करता है, और' टी' असंबद्ध है, इसका मतलब है कि इसमें कुछ भी लगता है, इसलिए यह 'सार्वजनिक शून्य कुछ (ऑब्जेक्ट इनपुट) {} 'के बराबर है; 'टी' बेकार है। 'DoOtherThing' के साथ वही बात - यह' सार्वजनिक शून्य डूथरिंग (ऑब्जेक्ट इनपुट) ' – newacct