将非泛型类扩展为泛型类

2024-04-30

org.apache.commons.collections.buffer 包中的 Java 类 CircularFifoBuffer 是非泛型的,可以存储任何类的对象。

我想创建一个通用版本,它只能保存类 T 的对象。我的第一个想法是扩展 CircularFifoBuffer 并简单地编写一个新的“add”方法:

public class CircularFifoQueue<T> extends CircularFifoBuffer {

    public boolean add(T data) {
        return super.add(data);
    }    

}

然而,这保留了旧的“add”方法,允许添加任意类的对象。有没有办法解决这个问题,使用继承而不是组合(这样我就不必重新实现 CircularFifoBuffer 的所有方法),但阻止该类的用户添加非 T 对象?


一种想法是不实现自己的缓冲区,只包装原始缓冲区:

public class CircularFifoQueue<T> { 
  private CircularFifoBuffer buffer = new CircularFifoBuffer();

  public boolean add(T data) {
     return buffer.add(data);
  }    

  // implement all other methods that are needed
}

所以内部缓冲区占据了一切,但包装器确保只T可以添加类型对象。问题:现在缓冲区没有实现任何接口。所以它的使用现在有点有限(如果你需要发送一个,你就不能使用它Buffer例如)

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

将非泛型类扩展为泛型类 的相关文章

  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

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

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 来自十六进制代码的 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
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • 为什么到处都有冻结常数?

    我们可以很容易地从许多著名的存储库中找到这种样式 例如机架 导轨等 例如在机架中 https github com rack rack blob 28e77c710ac2ddb35c436d78d72e28f28f964446 lib ra
  • JTable 不会在 JScrollPane 中滚动

    我在尝试让表格滚动时遇到了麻烦 它就是不会 我查看了其他堆栈答案并尝试了它们 但它们不起作用 我不确定我是否与这些解决方案有冲突 tableModel new TableModel Custom Table Model table new
  • 在发出拉取请求之前我应该​​使用 dev 分支进行变基吗?

    我们当前的工作流程 从 dev 创建一个功能分支 开发功能并推送分支后 执行以下操作 git checkout dev git pull rebase 开发中 git checkout my feature branch git rebas
  • 尝试捕获默认 iSight 相机时 OpenCV 崩溃

    我正在尝试让 openCV 在我的 Macbook Pro 10 8 5 视网膜型号 上运行 并且我想使用默认的 iSight 摄像头进行输入 因为如果我不这样做 我不想随身携带或购买 USB 摄像头不需要 我正在使用 OpenCV 用户文
  • python 可以从 C 头文件加载定义吗?

    我正在围绕 C API 编写一个 python 包装器 我有一个广泛的 API 描述 现在我正在努力实现头文件中定义的枚举 假设我里面有一个 C API 函数myAPI dll 它接受枚举作为参数 例如 void SomeFunction
  • 使用基数 R 进行分组

    Dataset 我有一个数据集 其中包含年份 季度 渠道 销售额 单位 df lt structure list year c 2013L 2013L 2013L 2013L 2013L 2013L 2013L 2013L 2013L 20
  • Postgres:将列聚合到数组中

    我有以下两个表 select from list list id name 9 Popular 11 Recommended and select from list item list id game id position 11 2 0
  • TensorFlow:训练时参数不更新

    我正在使用 TensorFlow 实现分类模型 我面临的问题是 当我运行训练步骤时 我的权重和误差没有更新 结果 我的网络不断返回相同的结果 我根据以下内容开发了我的模型MNIST 示例 https www tensorflow org v
  • scrapy中如何处理302重定向

    我在抓取网站时收到来自服务器的 302 响应 2014 04 01 21 31 51 0200 ahrefs h DEBUG Redirecting 302 to
  • Apache Cordova (Phonegap):跨站点脚本编写需要 jsonp 吗?

    我刚刚开始使用 Apache Cordova 我有一个库可以 通过ajax 调用soap 服务器 当我在本地计算机上的 Chrome 中运行这些程序时 在尝试调用该服务时会出现跨站点脚本错误 当我在 iOS 模拟器中使用 Cordova 浏
  • 如何使用 hg Convert 将 git 分支导入到 Mercurial 中?

    我的 git 存储库中有许多分支 david Panama app git branch r origin HEAD gt origin master origin master origin newButtons origin newFo
  • 在 Vue 的“选择”选项中显示来自服务器的对象列表

    我收到 grades 变量中格式正确的成绩列表 key gt value 如何使用此变量用 Vue 填充选择选项输入 我想我必须用 绑定 vue 变量 但我才刚刚开始使用 vue 我可以找到很少的基本示例
  • HttpURLConnection (java.net.CookieManager) 和 WebView (android.webkit.CookieManager) 之间的 cookie 双向同步

    不幸的是 Android 有很多 cookie 管理器 饼干为HttpURLConnection由以下人员维护java net CookieManager和饼干WebView由以下人员维护android webkit CookieManag
  • 如何在 Laravel 中使用数据库进行邮件设置

    我想让用户远离编辑配置文件 所以我在管理面板中制作了 Web 界面 用于设置邮件服务器 用户名 密码 端口 加密 我在 Laravel 4 2 中工作得很好 但是现在当应用程序被重写为 Laravel 5 时 出现错误 Class Sett
  • 如何改变Flutter对话框的位置

    我创建了一个对话框 在注册新用户时 Firestore 中存在号码时会显示该对话框 然而 默认情况下 Android 似乎将对话框定位在显示屏的中央 有没有办法将对话框定位在其调用的小部件的位置 对于我的情况 它是 凸起 按钮回调 还想知道
  • 如何在matplotlib中制作具有不同y轴的堆积折线图?

    我想知道如何制作堆积折线图 该图将在 matplotlib 中采用不同的列 关键是当我们进行聚合时 我需要在两个不同的列上进行数据聚合 我想我需要制作一个用于绘图的大数据框 我没有找到更漂亮 更方便的方法来在 pandas matplotl
  • 使用 Google Calendar API 返回 401(未经授权)

    我尝试通过 JavaScript 使用 Google Calendar API 并在使用以下代码时不断收到 401 错误响应 ajax dataType json url https www googleapis com calendar
  • 如何在 HTML 5 Web Worker 中访问 jQuery

    我无法在 HTML5 中访问 jQuery网络工作者 https en wikipedia org wiki Web worker 我有办法做到这一点吗 长话短说 包括这个脚本 http fel 8u cz workerrjs main w
  • 检索 arangodb 中没有链接边的顶点

    检索相关edge collection中没有边的所有顶点的最佳方法是什么 我尝试使用以下代码 但自 arangodb 2 8 以来 它变得非常慢 在以前的版本中并不是很快 但比现在快了大约 10 倍 对于大约 1000 个边和大约 3000
  • 将非泛型类扩展为泛型类

    org apache commons collections buffer 包中的 Java 类 CircularFifoBuffer 是非泛型的 可以存储任何类的对象 我想创建一个通用版本 它只能保存类 T 的对象 我的第一个想法是扩展