在接口扩展中指定泛型

2024-04-20

当用另一个接口扩展一个接口时,是否应该指定泛型类型的具体类型?

我的意思是,如果我有一个界面:

public interface Repo<T>{
      Collection<T> search(String params);
      T get(String id);
}

然后是一大堆特定的存储库,例如客户端仓库, 客户回购协议等等...指定类型是否合理T扩展此接口时,例如:

public interface ClientRepo extends Repo<Client>{
}
public interface CustomerRepo extends Repo<Customer>{
}

其中 Client 和 Customer 只是一些类。

有人遇到过类似的问题吗?我的意思是我可以这样做:

public interface ClientRepo<T> extends Repo<T>{
}

Addendum: 也许我应该更清楚地表达我拥有特定 Repos(例如 ClientRepo)的意图。还有一个接口叫仓库工厂将适当的 Repo 返回给客户端,例如:

public interface RepoFactory{
      ClientRepo createClientRepo();
      CustomerRepo createCustomerRepo();
}

该工厂是由实施者反过来,它提供了具体存储库的适当实现。

事实上从上面你可以说这个界面仓库api 的客户端不使用。

我希望够混乱了!对不起 :(


我发现这样做有更多用处

public interface SomeRepo<T> extends Repo<T>{
}

比通过扩展接口

public interface ClientRepo extends Repo<Client>{
}
public interface CustomerRepo extends Repo<Customer>{
}

也就是说,我过去已经做过这两件事,并且将来很可能会同时做这两件事。如果您在后一个解决方案中检测到太多重复代码,我会尽力将其替换为前一个解决方案。

如果你想要任何实际问题,编译器似乎很难意识到“公共接口 ClientRepo 扩展 Repo”可以与 Repo 兼容。这种情况不会经常发生(但是当它发生时,需要多次尝试才能使泛型接口正确)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在接口扩展中指定泛型 的相关文章

  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 使用 workbox-webpack-plugin 时,预缓存资源使用什么工作箱策略?

    我正在尝试了解工作箱和服务人员 使用workbox webpack plugin和GenerateSW模式时 用于预缓存资源的workbox策略是什么 IE 因为我似乎没有为预缓存资产设置路由 策略 以便服务工作线程更新这些资产的缓存 那么
  • PHP 本地化 - gettext 还是数组?

    设置多语言网站现在我需要决定为网站上的静态文本使用哪个选项 让我解释一下我的网站设置 然后您是否可以帮助我决定使用哪种解决方案 该站点是一个CMS系统 允许多个域指向同一目录并根据域名提供内容 因此所有域共享相同的代码 在网站上 我创建了称
  • iOS Safari:清除输入类型日期

    我制作了一个 NET mvc 应用程序 其中有一个字段 在 iPhone 在 Safari 中 上 一旦我单击此字段 就会出现一个本机 iOs 日期选择器 它有效 我可以选择一个日期 确认它 使用 完成 按钮 并提交表格 然后我再次访问此页
  • 克隆任意对象的函数

    我正在寻找一种方法来克隆在编译时 或运行时 我认为 未知的对象 问题的确切措辞是 编写一个可以克隆任意对象的函数 例如 将未知对象传递给函数 返回对象的深层副本 我猜我需要使用反射来读取函数和变量 然后了解如何创建一个新对象并将这些值分配给
  • 如何将三级词典转换为所需的格式?

    我有一个像这样的三级字典 data 2016 11 28 area1 am 0 007 pm 0 008 area2 am 0 0 pm 0 0 area3 am 0 01 pm 0 001 2016 11 29 area1 am 0 00
  • 以数据为中心的应用程序模型和面向对象的应用程序模型有什么区别?

    什么是以数据为中心的应用程序 与面向对象的应用程序模型有什么区别 这两个概念有些正交 以数据为中心的应用程序 http en wikipedia org wiki Database centric architecture数据库起着关键作用
  • docker-compose 无法启动

    我之前按照本演练成功创建了一系列 docker 容器 这些容器允许我使用 MySQLI PHP 和 phpmyadmin https gist github com jcavat 2ed51c6371b9b488d6a940ba104918
  • 使用指针作为函数参数时的段前缀

    我有一个汇编 c 问题 我刚刚读到了有关段前缀的内容 例如 ds varX 等 前缀对于逻辑地址的计算很重要 我也读到 默认值是 ds 一旦您使用 ebp 寄存器来计算地址 就会使用 ss 对于代码 cs 是默认值 这一切都是有道理的 现在
  • 如何将字符串中的表达式传递给 dplyr 0.7.2 中的动词

    我正在尝试实施我在网上找到的建议 但我的目标还差一半 这是一个可重现的示例 library tidyverse library dplyr library rlang data mtcars filter expr am 1 mutate
  • 有没有办法在 Google Directory API users.list 查询中使用“或”运算符?

    我想使用以下命令为 Google 域用户构建搜索查询用户列表 谷歌目录API 我尝试根据docs https developers google com admin sdk directory v1 guides search users
  • C 程序将一棵二叉搜索树复制到另一棵

    所以 在这里我想出了二叉搜索树程序 其中我创建了 2 个二叉树 tmp 和 tmp2 我试图将整个 tmp2 复制到 tmp 该节点作为用户的输入 但我遇到了一些分段错误 而且我也不太确定逻辑是否正确 这是整个程序 请让我知道 t cpy
  • 列表框无法显示子类变量

    我正在开发一个项目 其中用户输入动物值 姓名 年龄 性别等 并且用户输入的值显示在列表框中 这些类相互继承 以下是继承的工作原理 Animalclass 是所有类的父类 Mammal类继承自Animal class Dog类继承自Mamma
  • 如何将隐私政策添加到我的应用程序中,而不仅仅是在商品详情中

    我收到来自 Google Play 团队的以下电子邮件 您好 Google Play 开发者 我们的记录显示您的应用 XXXX 带有软件包 名称 com XXX XXX 目前违反了我们的用户数据政策 关于个人和敏感信息 政策问题 Googl
  • 在 CoordinatorLayout 中使用时页脚滚动出屏幕

    我有 HomeActivity 其中包含片段 底部有自定义导航视图 如下所示 通过单击个人资料图片 它会将该片段替换为 UserProfileView 片段 userProfileView 片段在 coordinatorLayout 内有折
  • Ruby 单引号与双引号

    有某种红宝石吗to s将变量更改为单引号字符串而不是双引号的方法 说我有 date Time now date to s 我希望输出为 2012 08 01 22 00 15 我该怎么做呢 或者有没有一种方法可以将 字符串转换为 字符串 T
  • 继承自 jQuery UI 对话框并调用重写方法

    下面的简单代码描述了我的问题 至少我希望如此 widget ui mydialog ui dialog create function How to call create method of dialog 我试着打电话 ui dialog
  • 使用 Oauth2 作为服务帐户的 Google 管理 API(教育版)- 403 错误

    我在使用 Google 新的 Admin SDK 时遇到困难 特别是使用 Oauth2 的 Directory API 我想我已经快到了 但我在尝试使用 Directory API 检索用户详细信息时遇到了困难 我正在使用 Google E
  • 使用 int 值初始化向量

    我想用这个 ASCII 代码初始化这个 char 向量 vector
  • SQLite“插入或替换到”与“更新...哪里”

    我从来没有见过语法INSERT OR REPLACE INTO names id name VALUES 1 John 以前在 SQL 中使用过 我想知道为什么它比UPDATE names SET name John WHERE id 1
  • 在接口扩展中指定泛型

    当用另一个接口扩展一个接口时 是否应该指定泛型类型的具体类型 我的意思是 如果我有一个界面 public interface Repo