如何传递一个方法作为其他方法的参数,但使最后一个方法在其签名上具有泛型作为参数?

时间:2018-10-25 08:49:55

标签: java

我是泛型的新手,现在我才发现这一点。

我有方法

//interface
myMethod(MyOtherService service)

//implementation
@Override
public myMethod(MyOtherService service){
   service.doSomething();
}

我必须澄清MyFunction不会扩展其他Class

我想这样做

//interface
myMethod(GenericFunction function)

//Implementation
@Override
myMethod(GenericFunction function){
//try to cast it to MyOtherService or ServiceABC, etc
if(function instanceof(MyOtherService.class)){
//convert and call to doSomething();
}

}

我确实做到了,编译器没有抱怨,问题是我不能用

调用它

我想使用功能接口(如果有),但是我的问题是doSomething()实际上接收了多个参数。

myMethod(myService)

因为它需要一个Function实例。

我做错了什么?有什么主意吗?

1 个答案:

答案 0 :(得分:1)

我认为您只是使用Object作为参数,请参见下面的代码

public class system_property implements A {

    public static void main(String[] args) {
        new system_property().myMethod(new MyOtherService());
    }

    @Override
    public void myMethod(Object service) {
        if (service instanceof MyOtherService) {
            System.out.println("YES");
        }
    }

}

interface A {

    void myMethod(Object service);
}

class MyOtherService {

}