पारित तर्कों के लिए लागू नहीं है मेरे पास जावा जेनरिक के बारे में "अजीब" समस्या है।जावा जेनेरिक क्लास की विधि
Service.class
package jse.generics.service;
public interface Service {
}
ServiceProvider.class
package jse.generics.service;
public interface ServiceProvider<T extends Service> {
public T getService();
}
ServiceProviderRegistry.class
:सबसे पहले मैं अपने कोड की सूची
package jse.generics.service;
import java.util.HashMap;
import java.util.Map;
public class ServiceProviderRegistry<T extends Service> {
private Map<Class<T>, ServiceProvider<T>> map = new HashMap<Class<T>, ServiceProvider<T>>();
public void register(Class<T> clazz, ServiceProvider<T> provider) {
map.put(clazz, provider);
}
}
FooService.class
package jse.generics.service;
public class FooService implements Service {
}
FooServiceProvider.class
package jse.generics.service;
public class FooServiceProvider implements ServiceProvider<FooService> {
@Override
public FooService getService() {
return new FooService();
}
}
ServiceTest.class
package jse.generics.service;
public class ServiceTest {
/**
* @param args
*/
public static void main(String[] args) {
ServiceProviderRegistry<? extends Service> registry = new ServiceProviderRegistry<Service>();
registry.register(FooService.class, new FooServiceProvider());
}
}
सर्विसटेस्ट क्लास में संकलक शिकायतें कि रजिस्ट्री.register विधि इसे पास किए गए तर्कों के लिए लागू नहीं है। मुझे नहीं पता कि ऐसा क्यों होता है। इसलिए मैं इस समस्या को हल करने के लिए आपको लड़के की मदद की प्रतीक्षा कर रहा हूं।
puhhh ... अपने विवरण का प्रारूप कृपया ... :-) –
कहाँ 'है T' घोषित 'ServiceProvider.getService()' में? – hertzsprung