抽象类的复制构造函数

2024-01-31

我有一个名为的抽象类AClass。在同一个包中我有AnotherClass,其中我有一个ArrayList of AClass对象。在复制构造函数中AnotherClass我需要复制一份AClass里面的物体ArrayList.

问题:

我无法在中创建复制构造函数AClass因为它是一个抽象类,我不知道将继承的类的名称AClass。实际上,在这个项目中,没有对象会继承这个类,但是这个项目将被其他项目用作库,这些项目将提供以下子类AClass。我的设计有错误吗?或者有解决这个问题的方法吗?

Edit:这是一些代码:

public class AnotherClass{
    private ArrayList<AClass> list;
...
    /** Copy constructor
    */
    public AnotherClass(AnotherClass another){
        // copy all fields from "another"
        this.list = new ArrayList<AClass>();
        for(int i = 0; i < another.list.size(); i++){
            // Option 1: this.list.add(new AClass(another.list.get(i)));
            // problem: cannot instantiate AClass as it is abstract
            // Option 2: this.list.add(another.list.get(i).someKindOfClone());
            // problem? I'm thinking about it, seems to be what dasblinkenlight is suggesting below
        }
    }
...
}

我无法在中创建复制构造函数AClass因为它是一个抽象类,我不知道将继承的类的名称AClass

这通常是正确的。但是,由于您有一个列表AClass,您不需要知道确切的子类型:制作副本的抽象函数就足够了:

protected abstract AClass makeCopy();

这类似于clone()的功能java.lang.Object,除了所有子类必须实现它,并且返回类型必须是AClass.

由于每个子类都知道自己的类型,因此它们的实现应该没有问题makeCopy()方法。这是您的代码中的样子:

for (int i = 0 ; i < another.list.size() ; i++) {
    this.list.add(another.list.get(i).makeCopy());
}

注:该设计被称为原型模式 http://en.wikipedia.org/wiki/Prototype_pattern,有时非正式地称为“虚拟构造函数”。

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

抽象类的复制构造函数 的相关文章

  • 有效地将三个字母的货币名称转换为符号名称(例如 20 美元到 20 美元)

    我有一个格式化的字符串 它等于USD 20 我想把它转换成 20 我怎样才能高效地做到这一点 我应该使用正则表达式来执行此操作 但由于区域设置发生变化 国家 地区 ISOCode 也会发生变化 你需要的是这个 import java uti
  • 在 Spark 中写入 JSON 时保留具有空值的键

    我正在尝试使用 Spark 编写 JSON 文件 有一些键有null作为价值 这些在中显示得很好DataSet 但是当我写入文件时 密钥会丢失 我如何确保它们被保留 写入文件的代码 ddp coalesce 20 write mode ov
  • Java 比 Xmx 参数消耗更多内存

    我有一个非常简单的 Web 服务器类 基于 Java SEHttpServer class 当我使用此命令启动编译的类来限制内存使用时 java Xmx5m Xss5m Xrs Xint Xbatch Test 现在如果我使用检查内存top
  • 在 Gradle 中运行自定义测试任务而无需重新编译

    我有一个 Gradle 自定义测试任务来运行我的集成测试 我希望能够在 Gradle 不自动完成之前的所有阶段并仅运行测试的情况下运行它 有没有办法在每个构建步骤不使用 x 的情况下执行此操作 None
  • 将 java 方法参数设置为最终参数

    那有什么区别final在下面的代码之间进行 将参数声明为有什么好处final public String changeTimezone Timestamp stamp Timezone fTz Timezone toTz return pu
  • 在 JList 中写一些东西

    嘿 我还有另一个问题 我创建JList在我的主窗口中 现在我想向其中添加一些内容 我这样做 private void jButton2ActionPerformed java awt event ActionEvent evt Dodaj
  • 将更改(永久)保存在数组列表中?

    那可能吗 例如 用户将新的项目 元素添加到数组列表 缓冲读取器进程 中 并且肯定会发生更改 我的问题是 即使用户多次更改数组列表 它也可能会永久存在 即使他们关闭程序并再次打开它 它也会一直存在 注意 不使用 txt 很抱歉问这样的问题 但
  • 如何确定 JDialog 显示在哪个屏幕上

    我有一个非常大的应用程序 有多个对话框 我的任务是确保不完全可见的对话框 因为用户将其从可见屏幕区域拉出 移回屏幕中心 当我只处理一个屏幕时 这没问题 它工作得很好 但是 该应用程序的大多数用户的桌面上都有两个屏幕 当我尝试找出对话框显示在
  • 如何在 Android 中签署 AAR Artifacts?

    我目前正在开发一个 AAR android 库 我想用我自己的密钥对已发布的工件进行签名 以便我可以确定我是否发布了具有相同名称和功能的假 aar 注意事项1 我希望能够以编程方式检查我的库的真实性 即使是一个伪造的库 只是伪造了我的 aa
  • TableModel setCellEditable 并自动将值设置回 false

    我目前正在尝试在 JTable 中实现 JPopupMenu 它允许解锁单元格以进行编辑 Override public void actionPerformed ActionEvent e if e getActionCommand Un
  • Byte[] 和 java.lang.OutOfMemoryError 按位读/写文件

    我正在努力擦除 Android 中的一些可用空间 这是我的代码 private void creatingFileDelete int size int passMode File lastFile new File Environment
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • java多线程中“私有最终对象”锁定有什么用?

    java多线程中 私有最终对象 锁定有什么用 据我的理解 我认为要使一个类成为线程安全的 我们应该使用内部锁定 将所有方法标记为同步并使用 this 将它们锁定在对象的监视器上 或者我们可以用方法中的私有最终对象锁替换类的 this 上标记
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • mysql 准备好的语句错误:MySQLSyntaxErrorException

    我使用准备好的语句编写了选择语句 每次尝试运行都会出现此错误 我如何克服这个错误 我的jdbc连接器是mysql connector java 5 1 13 bin jar 我的代码 public Main add ad to getAdD
  • 在Android项目中引用(纯java)项目(找不到类)

    我试图在我的 Android 项目中引用一个纯 java 项目 gt Java 项目有一大堆我需要使用的类 哦 正如第一个回复所指出的 我正在使用 eclipse 是的 唯一的问题是 我总是找不到类 XXX 从方法 com example
  • Spring Boot 中的服务限流能力

    有什么办法可以实现Spring中其余服务的服务限制能力 特别是Spring boot 这里的期望是 我的服务暴露于外界 目前每秒 分钟的服务调用数量没有限制 我们希望通过设置限制来控制这一点 我有一个替代选项 通过跟踪并发哈希映射或任何缓存
  • 当框架被拖动时,如何设置 JWindow 的位置位于文本字段下方?

    我正在制作一个自动完成项目 就像谷歌一样 我的框架中有一个 jtextfield 每当我在该字段中输入内容时 该文本字段下方就会出现一个 JWindow 并且该窗口来自另一个类 现在的问题是 每当我拖动框架时 如何使窗口始终出现在文本字段下
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi

随机推荐

  • 除了减少内存使用之外,C# 静态函数的性能是否比非静态函数更好?

    我假设public or private static由于内存中只有静态目标的一份副本 因此目标必须减少内存使用量 看起来因为一个方法是静态的 所以该方法可能成为 CLR 编译器进一步优化的潜在点 超出了非静态函数所能实现的范围 不过只是一
  • CSS 自动完成字体大小[重复]

    这个问题在这里已经有答案了 当将鼠标悬停在浏览器的自动完成建议上时 我无法弄清楚如何增加或如何使用预览文本的默认字体大小 我在用着https tailwindcss com https tailwindcss com 适合所有风格 E g
  • 如何使用 javascript 将图像加载到 bootstrap 模式中

    我的设置是 4 个链接 如下 我希望每个链接都打开 myModal 但根据单击的链接 应该在模式中加载不同的图像文件 我让它适用于其中一个链接 li a href myModal 6 Teams a li li a href 5 Teams
  • CSS 翻译后是否可以“捕捉到像素”?

    我创建了一个模态框并使用克里斯 科耶提到的技术 http css tricks com centering percentage widthheight elements 到目前为止 我发现的唯一问题是 有时盒子会偏移半个像素 这会让一些孩
  • 用于选择具有最后一个子值的元素的 xpath

    这是我的 xml 文件
  • MVC 项目间共享布局

    我想知道是否有一种方法可以在所有项目之间共享 layout cshtml 文件 这样 如果我想更改我们公司的页面布局 我只需在一处更改即可 从我迄今为止看到的研究来看 人们提到了可能创建 dll 文件 另外我不是在谈论 mvc 中的区域 我
  • 编译时多态性和静态绑定有什么区别?

    This https stackoverflow com questions 10580 what is early and late binding链接帮助我理解静态绑定和动态绑定之间的区别 但我很困惑 静态绑定和编译时多态性有什么区别或
  • 内存不足错误,是我的应用程序的错吗?

    我在 Android 市场上有一个应用程序 其中异常和错误由 acra 捕获并发送给我 但我收到了很多内存不足的错误 在不同类型的课程中 一些是我的应用程序 一些是通用的java 这是否总是意味着我的应用程序存在问题 或者也可能是由于其他进
  • Struts2.5 JSONInterceptor 没有填充 Action 类:

    我正在构建一个 CRUD 应用程序 使用 embers 作为客户端 struts2 作为服务器 从 ember 创建记录的 post 请求如下所示 接受 应用程序 json 文本 javascript q 0 01 接受编码 gzip de
  • Scala 中的 Drools Expert 输出对象

    我是 Scala 和 Drools Expert 的新手 需要一些帮助来从 Drools 会话中获取信息 我已经成功设置了一些由 Drools 规则操作的 Scala 类 现在我想创建一个对象来存储一组输出事实 以便在 Drools 外部进
  • 从 GeoPandas 图中重新定位图例

    I m plotting a map with legends using the GeoPandas plotting function When I plot my legends appear in the upper right c
  • 防御 XSS 攻击?

    我对 PHP 很陌生 但我听说 XSS 漏洞很糟糕 我知道它们是什么 但如何保护我的网站 为了防止 XSS 攻击 您只需正确检查和验证您计划使用的所有用户输入的数据 并且不允许从该表单插入 html 或 javascript 代码 或者您可
  • 为 Twilio-Whatsapp 电话号码上的传入消息设置 Webhook

    我们有一个支持 Whatsapp 的 Twilio 电话号码 当尝试以编程方式设置传入消息的 Webhook 时 Webhook 设置正确 但消息未通过 Whatsapp 电话号码的 Webhook 似乎位于与普通电话号码不同的位置 要手动
  • 范围内的字符类 - vim

    鉴于我有以下字符串 This is a test string string string 并尝试执行以下替换 s w substitute g 它不会出现错误 未找到模式 当我使用时 s a zA Z substitute g 有用 有没
  • 什么情况下fgetcsv返回false?

    The 文档 http php net manual en function fgetcsv php says 如果提供了无效句柄 则 fgetcsv 返回 NULL 如果出现其他错误 包括文件结尾 则返回 FALSE 除了文件结尾之外 什
  • 访问 static constexpr std::array 而不使用类外定义

    我有一个定义一些数组的类 点 hpp class Points public static constexpr std array lt double 1 gt a1 0 0 static constexpr std array lt do
  • 如何在java中生成所有可能的64位随机值?

    是否有JavaSecureRandom nextLong 返回所有可能的值 因为它继承自Random它只使用 48 位 如果没有 我仍然可以在 Java 中通过修改 Random 类来实现它吗 如何做到这一点 我只想使用一个全随机长数生成器
  • 无需刷新页面即可启用地理位置?

    目前 我们必须刷新网页 实际上PhoneGap应用程序 如果 GPS 关闭并且 通知用户后 然后打开 我们怎样才能更新GeoLocation状态无需刷新页面 应用程序 为什么不简单地使用 setInterval 每隔几秒检查一次支持
  • 在 Heroku 的生产中使用 ENV 文件

    我的配置中有以下行生产 rb环境文件 按照说明本文 https devcenter heroku com articles memcachedcloud using memcached from ruby config cache stor
  • 抽象类的复制构造函数

    我有一个名为的抽象类AClass 在同一个包中我有AnotherClass 其中我有一个ArrayList of AClass对象 在复制构造函数中AnotherClass我需要复制一份AClass里面的物体ArrayList 问题 我无法