【发布时间】:2013-05-23 04:41:58
【问题描述】:
我有一个接口,它将由几个不同的类实现,每个类使用不同的类型和返回类型。返回类型可以从方法泛型类型中推断出来,但我在实现这一点时遇到了麻烦。
目前界面是这样的:
public interface TransformUtilsBase<T> {
Class<?> transformToNhin(T request, BrokerContext brokerContext);
}
我希望 Impl 类看起来像:
public class TransformUtilsXCPD implements TransformUtilsBase<foo> {
bar transformToNhin(foo request, BrokerContext brokerContext) {
code here
}
在 impl 我知道返回类型应该是什么。在接口层面没有办法说出来。
我可以完全放弃一个接口,只创建几个具有相同方法名称的类,但我想将其形式化,因为它们都用于相同的目的。只是类型不同。
或者我可以只拥有一大类静态方法,因为它们是 util 操作,但是管理一个具有这么多同名方法的类以及所有必要的辅助方法(同样都具有相同的名称)。
实现接口似乎是形式化功能的最佳选择,即使我无法使用静态方法。我只是不知道如何处理返回类型。
编辑:扩展界面以显示完整示例,以防止进一步混淆。 接口
public interface TransformUtilsBase<T, U> {
Class<?> transformToNhin(T request, BrokerContext brokerContext);
Class<?> transformToXca(U request, BrokerContext brokerContext);
}
实施
public class TransformUtilsXCPD implements TransformUtilsBase<Foo, Bar> {
Baz transformToNhin(Foo request, BrokerContext brokerContext) { code here }
Biz transformToXca(Bar request, BrokerContext brokerContext) { code here }
}
【问题讨论】:
-
您是要返回实际的 Baz 类还是 Baz 的实例?您的编辑意味着它可能是第二个。
-
好点。我正在尝试返回在转换过程中创建的 Baz 类的特定实例。通配符表示法是我所知道的最好的方式来表达我想要的意图,即仅为方法变量提供泛型,返回类型可以由它来确定。