如何不引发一般指定的异常?

我创建了一个“生产者”接口(分别与方法引用一起使用,以便在单元测试中轻松模拟):

@FunctionalInterface
public interface Factory<R, T, X extends Throwable> {
    public R newInstanceFor(T t) throws X;
}

我就是这样创建的,因为我的第一个用例实际上不得不抛出一些检查。WhateverException

但是我的第二个用例没有X可以扔。

我能想出的让编译器满意的最好的办法是:

Factory<SomeResultClass, SomeParameterClass, RuntimeException> factory;

它编译,并做了我需要的,但仍然很丑陋。有没有办法保留该单个接口,但在声明特定实例时不提供X?


答案 1

唯一的方法是子类化 - 但我敢打赌你知道这一点。为了使我的论点更有力,请看一下扩展。BinaryOperatorBiFunction


答案 2

你不能在Java中做到这一点。唯一的方法是创建子接口。

public interface DefaultExceptionFactory<R, T>
        extends Factory<R, T, RuntimeException>