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

标签 java

我在泛型方面非常新手,现在我刚刚发现了这一点。

我有一个方法

//interface
myMethod(MyOtherService service)

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

我必须澄清 MyFunction 不扩展其他类

我想做这个

//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();
}

}

我实际上这样做了,编译器没有提示,问题是我无法用

调用它

我想使用函数式接口(interface)(如果有的话),但我遇到的问题是 doSomething() 实际上接收多个参数。

myMethod(myService)

因为它需要一个 Function 实例。

我做错了什么?有什么想法吗?

最佳答案

我认为你只需使用对象作为参数,请参阅下面的代码,

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 {

}

关于java - 如何将一个方法作为其他方法的参数传递,但使最后一个方法在其签名上具有泛型作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52985140/

相关文章:

java - 在自定义 View 中绘制描边形状

Java 多重构造函数设置问题

java - JSprit:如何最大化可用车辆的数量以减少时间

java - ForEach 和 Facelets

java - 正则表达式帮助 -- 忽略引号之间的内容

java - Java 8 与 GWT 2.6 或 2.7 兼容吗?

java - Java 中的持续时间差异

java - Android:在布局中出现 "Level Complete"对话框的方法

java - 构造函数 Time 已弃用

java - DAO与hibernate的关系