微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在实现通用接口时如何返回具体类型

我有一个接口将被几个不同的类实现,每个类使用不同的类型和返回类型.返回类型可以从通用类型的方法推断出来,但是我在执行此操作时遇到困难.

界面如下所示:

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的子类

原文地址:https://www.jb51.cc/java/121114.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐