java - 可以是 N 个接口(interface)的实现的方法参数

标签 java java-8

在 Java 中有没有一种方法可以使用泛型来指定实现接口(interface) A 或 B 的方法参数?

public void foo(Object bar) // bar could either be an implementation of interface A or interface B but nothing else.

private interface A<T>
{
    Object work(final Fizz fizz, final T t);
}

private interface B
{
    Object work(final Fizz fizz);
}

最佳答案

一般意义上没有真正的解决方案,但对于您的特定示例,您可以尝试类似的方法:

public <T> void foo(A<T> bar) {
    // ...
}

private interface A<T> {
    Object work(final Fizz fizz, final T t);
}

private interface B extends A<Void> {

    default Object work(final Fizz fizz) {
        return work(fizz, null);
    }

    Object work(final Fizz fizz, final Void ignoreMe);
}

关于java - 可以是 N 个接口(interface)的实现的方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40371667/

相关文章:

lambda - 为什么 forEach 循环内的变量不应更改?

java - 即使数据集更改为另一个值,哈希值也不会更改

java - 使用 Java 8 流解析字符串

Java并发,什么情况下CompletableFuture.supplyAsync()会返回null

java - 将 JButton 数组添加到 JPanel(按钮不可见)

java - 如何在运行时检查某个类是否有任何实例?

使用 Lambda 的 Java 8 过滤器数组

java - spring中的Model对象刷新页面时获取空值

java - 从 API 检索艺术家 ID——将它们处理为 long 还是 int?

java - 如何迭代对象数组列表并设置为java 8中的另一个对象列表?