我可以将泛型参数设置为可空的还是应该创建两个接口?



我对Java中的泛型有点陌生。我创建了一个接口,作为我的web层和域层之间所有请求处理程序的合约(我试图每个用例有一个处理程序,而不是巨大的服务)。下面是接口的代码:

public interface RequestHandler<TResponse, TRequest> {
Response<TResponse> Handle(TRequest request);
}

"Response"type是一种包装器类型,用于处理来自我的域的任何响应的状态(hasFailed、errorMessage等)。所以我的问题是,有时我的请求可能是空的(例如一个"GetAll")。是否有可能在java中有一种约束,将允许实现没有一个请求,或者我应该声明一个其他的接口吗?

谢谢!

我认为单独的界面是一个好主意。通过使用单独的接口,您可以消除返回类型应该是什么的模糊性。

我还会更进一步,强烈建议你不要遵循@VGR的建议。使用java.lang.Void不必要地使设计复杂化,而实际上,您想说的只是没有返回类型。使用这种间接形式是引入难以发现的bug的好方法。

Void是有意义的,当你坚持一个API约定,没有办法改变它。但是,既然您现在正在积极地创建端点,那么当您有更清晰的选择时,就没有很好的理由引入它。

最新更新