我是泛型的新手,现在我才发现这一点。
我有方法
//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实例。
我做错了什么?有什么主意吗?
答案 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 {
}