У меня есть этот метод, чтобы получить мои услуги
public <T extends ServiceInterface> T getService(Class<T> aServiceClass);
Я хотел бы создать экземпляр класса «MyService», который распространяется на ServiceInterface с помощью этого метода.
Как это сделать? я должен сделать объект new MyService
, чтобы передать его в качестве параметра? но если я это сделаю, метод службы get не будет полезен.
Если я понимаю ваш вопрос, вы хотите создать класс MyService
, который расширяет ServiceInterface
. И вы хотите получить свою Услугу методом getService(Class<T> aServiceClass>)
, верно? Это будет выглядеть так (но, пожалуйста, разделите классы в разных файлах):
package test;
public class Test2 {
public static void main(String[] args) {
MyService m = getService(MyService.class);
//m.someMethod(...);
}
public static <T extends ServiceInterface> T getService(Class<T> aServiceClass) {
return null; //??
}
//class MyService
public class MyService extends ServiceInterface{
//someMethods...
}
//class ServiceInterface
public class ServiceInterface {
public <T extends ServiceInterface> T getService(Class<T> aServiceClass) {
return null; //whatever the method is doing
}
}
}
Для ServiceInterface (или MyService) не обязательно иметь метод getService. Этот метод является просто методом в каком-то другом классе.
Хорошо, я удалил метод. А вот так можно назвать метод getService(...)
.
obj.getService(MyService.класс); Пропустите тип класса, как это.