java – 在实现通用接口时如何返回具体类型
发布时间:2020-12-14 05:49:58 所属栏目:Java 来源:网络整理
导读:我有一个接口将被几个不同的类实现,每个类使用不同的类型和返回类型.返回类型可以从通用类型的方法推断出来,但是我在执行此操作时遇到困难. 界面如下所示: public interface TransformUtilsBaseT { Class? transformToNhin(T request,BrokerContext brokerC
我有一个接口将被几个不同的类实现,每个类使用不同的类型和返回类型.返回类型可以从通用类型的方法推断出来,但是我在执行此操作时遇到困难.
界面如下所示: 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 } 在我看来,我知道返回类型应该是什么.在界面层面没有办法说出来. 我可以一起放弃一个界面,只需要使用相同的方法名称来完成几个类,但是我想使它正式化,因为它们都被用于相同的目的.只有类型不同. 或者我可以有一个大类的静态方法,因为它们是util操作,但是使用相同名称的方法和所有必需的帮助方法(全部都具有相同的名称)来管理一个类变得笨拙. 实现界面似乎是形式化功能的最佳选择,即使我无法执行静态方法.我不知道如何处理返回类型. 编辑:在界面上展开,展现出完整的例子,防止进一步的混乱. public interface TransformUtilsBase<T,U> { Class<?> transformToNhin(T request,BrokerContext brokerContext); Class<?> transformToXca(U request,BrokerContext brokerContext); } IMPL public class TransformUtilsXCPD implements TransformUtilsBase<Foo,Bar> { Baz transformToNhin(Foo request,BrokerContext brokerContext) { code here } Biz transformToXca(Bar request,BrokerContext brokerContext) { code here } } 解决方法
为什么你不声明返回类型的类型,像这样
public interface TransformUtilsBase<T,S> { S transformToNhin(T request,BrokerContext brokerContext); } 您甚至可以将您的返回类型“绑定”为特定类型(例如Bar) public interface TransformUtilsBase<T,S extends Bar> { S transformToNhin(T request,BrokerContext brokerContext); } 实施的类将声明为 public class TransformUtilsXCPD implements TransformUtilsBase<Foo,BarImpl> { BarImpl transformToNhin(Foo request,BrokerContext brokerContext) { //code here } } BarImpl是Bar的子类 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |