当前位置: 首页 > 面试题库 >

通用接口

邵修诚
2023-03-14
问题内容

假设我想定义一个接口,该接口代表对远程服务的调用。现在,对远程服务的调用通常会返回一些信息,但也可能包含输入参数。假设一个实现类通常只实现一个服务方法。鉴于上述信息,以下是一个较差的设计(感觉不太正确):

public interface IExecutesService<A,B>
{
    public A executeService();
    public A executeService(B inputParameter);
}

现在,让我们用一个类执行该接口,该类使用输入参数执行远程服务:

public class ServiceA implements IExecutesService<String,String>
{
  public String executeService()
  {
    //This service call should not be executed by this class
    throw new IllegalStateException("This method should not be called for this class...blabla");
  }

  public String executeService(String inputParameter)
  {
    //execute some service
  }

关于上述问题,我有两个问题:

  1. IExecutesService<A,B>如果要提供需要不同输入参数和接口方法返回类型的子类,则使用通用接口()是否合适?
  2. 我该如何做得更好?也就是说,我想将我的服务执行者归为一个通用界面(IExecutesService);但是,实现类通常只会实现一种方法,并且使用IllegalStateException感觉真的很丑。同样,对于IExecutesService<A,B>没有任何输入参数调用服务的实现类,B类型参数将是多余的。为两个不同的服务调用创建两个单独的接口似乎也有些过头。

问题答案:

这是一个建议:

public interface Service<T,U> {
    T executeService(U... args);
}

public class MyService implements Service<String, Integer> {
    @Override
    public String executeService(Integer... args) {
        // do stuff
        return null;
    }
}

由于类型擦除,任何类都只能实现其中之一。这至少消除了冗余方法。

您提出的接口并不是一个不合理的接口,但我也不是100%肯定它会增加什么价值。您可能只想使用标准Callable界面。它不支持参数,但是接口的那部分值最小(imho)。



 类似资料:
  • 本文向大家介绍TypeScript 通用接口,包括了TypeScript 通用接口的使用技巧和注意事项,需要的朋友参考一下 示例 声明通用接口 具有多个类型参数的通用接口 实施通用接口 用泛型类实现它: 用非泛型类实现它:            

  • 问题内容: 我们可以在Java中创建通用接口数组吗? 在其他班级 问题答案: 不幸的是,Java不支持创建通用数组。我不知道确切原因。实际上,泛型仅在编译时存在,并且在您运行javac时即从.java移至.class时将其删除。但是仅仅了解限制是不够的。他们可能对此功能有些向后兼容的问题。 这是您可以使用的解决方法。 使用集合(例如列表)而不是数组。 创建没有泛型的数组,将代码放入带有注释的特殊工

  • 1. 接口通用规则设置 1.1. 请求 所有API接口使用HTTP(s)协议访问,交互过程中请求和响应格式均为JSON类型。Content-Type 为 application/json;charset=utf-8。 所有请求需要携带 Header头进行身份验证: 字段名 含义 access_id 身份ID,由cc视频提供给客户 timestamp 时间戳(当前时间毫秒数,如java:System

  • 我见过存储库模式的各种用法。我倾向于一种我很少看到的模式,我想知道这是否有充分的理由。 例子: 利益 构造函数将是内部的,只能通过工厂模式访问,所以我不担心这里的复杂性。 IPerson 强制实现 Save() 方法,但教师不需要知道它是如何持久化的 工作原理类似于实体框架代理对象 我可以在 Iperson 对象上调用 Save(),而无需知道它是老师 应用- 欺骗 > 业务对象不再是普通的旧C#

  • 我有个小问题。这可能微不足道,但我以前从未面对过。 我有一个通用接口和它的通用实现。我想自动连线,但发生了错误。以下是详细情况: 接口 实施 自动布线尝试 错误 我想让它尽可能简单。我已经检查了网络,但是我只发现了在配置中定义我的确切bean。如果可能的话,我更喜欢避免它。

  • Makeblock 提供10cm、20cm、60cm 三种规格的5V通用连接线,该连接线可以用于 mbuild 与 mbuild 模块,mbuild 与光环板之间的连接。 如需要其他长度的连接线,你可以将现有连接线通过与延长模块组合。