Java-使用具有Class <t>作为参数的getService方法

时间:2019-05-22 12:44:47

标签: java generics

我有这种获取服务的方法

public <T extends ServiceInterface> T getService(Class<T> aServiceClass);

我想使用此方法实例化扩展到ServiceInterface的类“ MyService”。

该怎么做?我应该制作一个new MyService对象以将其作为参数传递吗?但是如果这样做,get服务方法将无用。

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题,那么您想创建一个扩展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
        }

    }
}