मेरे पास कक्षाओं की एक सूची है जो एक निश्चित इंटरफ़ेस को लागू करती है:

List<Class<? extends DatabaseField>> models = new ArrayList<Class<? extends DatabaseField>>();

मैं इस सूची को उस फ़ंक्शन में पास करना चाहता हूं जो उस सूची में पुनरावृत्त होता है, और एक या दो इंटरफ़ेस फ़ंक्शंस का उपयोग करता है।

फ़ंक्शन हस्ताक्षर कैसा दिखेगा?

मैंने चीजों की कोशिश की है जैसे:

public static void <List<Class<T implements DatabaseField>> myMethod(List<Class<T>> myList)

और मुझे यकीन नहीं है कि कैसे आगे बढ़ना है।

0
dfaulken 25 जुलाई 2018, 23:38
public static void myMethod(List<Class<? extends DatabaseField>> myList) में क्या खराबी है? हालांकि, यह स्पष्ट नहीं है कि आप वास्तव में पहली बार में इस सूची का उपयोग कैसे करना चाहते हैं। हो सकता है कि आप जो करने की कोशिश कर रहे हैं उसका एक उदाहरण शामिल करना चाहिए।
 – 
VeeArr
25 जुलाई 2018, 23:42
कक्षाओं की सूची को देखते हुए, मैं सामान्य रूप से प्रत्येक में से एक को तुरंत चालू करना चाहता हूं और इंटरफ़ेस विधियों का उपयोग करना चाहता हूं।
 – 
dfaulken
26 जुलाई 2018, 00:15

2 जवाब

इसे आजमाएं, क्योंकि इसे काम करना चाहिए।

public static <T extends DatabaseField> void myMethod(List<T> myList) {

}
0
Joe 25 जुलाई 2018, 23:45
यह संकलित करता है बशर्ते मैं तर्क सूची में Class<T implements DatabaseField> जोड़ूं - धन्यवाद - लेकिन दूसरे छोर पर आमंत्रण के साथ मिलान टाइप नहीं करेगा।
 – 
dfaulken
26 जुलाई 2018, 00:16

आपका विधि हस्ताक्षर होना चाहिए:

public static void myMethod(List<Class<? extends DatabaseField>> myList)

फिर आप myList पर पुनरावृति कर सकते हैं और अपनी इच्छानुसार वर्ग वस्तुओं पर काम कर सकते हैं:

for(Class<? extends DatabaseField> clazz : myList) {
    DatabaseField obj = clazz.newInstance();
    obj.databaseFieldMethod();
}
0
VeeArr 26 जुलाई 2018, 01:00