当前位置: 首页 > 知识库问答 >
问题:

在简单的子类之间进行复制的简单方法

宋丰
2023-03-14

我有一个包含40个属性的抽象超类。我还有2个子类,基本上扩展了超类。现在我想将一个子类转换为另一个子类。

public abstract class ParentClass{
  // ... many attributes 
}

public ChildClassA extends ParentClass{}
public ChildClassB extends ParentClass{}

像这样的简单类转换不起作用,并引发ClassCastException:

public ChildClassA to(){
    return (ChildClassA) ((ParentClass) this);
}

我可以手动编写一个复制构造函数,但这是一项繁琐的工作。

另一种方法是序列化和转换。例如,使用XML或JSON。但这用于克隆类,再次反序列化将引发类强制转换异常。

还有其他更好的办法吗?

共有1个答案

禹德水
2023-03-14

我会质疑用不添加任何内容的子类扩展基类的设计决策,尤其是因为它们必须从一个转换到另一个。您可以使用一个类,但添加一个枚举字段来区分不同类型。然后,转换将只是将此字段更改为不同的值。

然而,如果您真的需要它们是不同的类,并且能够从一个类转换到另一个类,并且您不想编写繁琐的代码来手动复制字段,那么您可以查找一些Java映射框架,例如MapStruct。

 类似资料:
  • 本文向大家介绍php简单复制文件的方法,包括了php简单复制文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php简单复制文件的方法。分享给大家供大家参考,具体如下: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,

  • 问题内容: 有没有简单/快速的方法可以在Go中复制文件? 我找不到文档中的快速方法,并且搜索互联网也无济于事。 问题答案: 警告:此答案主要是关于向文件添加第二个链接,而不是复制内容。 一个 强大的 和 高效率 副本的概念很简单,但并不容易实现,因为需要处理一些边缘情况和系统限制由目标操作系统强加的,它的配置。 如果您只想复制现有文件,则可以使用。这样可以避免在应用程序中移动字节并节省磁盘空间。对

  • 问题内容: 我有一些C#代码需要调用Python脚本数千次,每次都传递一个字符串,然后期望返回。可以使用任何版本的Python运行python脚本,因此我不能使用Iron python。建议使用IPC命名管道。我对此没有经验,并且在弄清楚如何在C#和Python之间执行此操作时遇到了麻烦。这是一个简单的过程,还是我正在寻找可观的工作量?这是解决我的问题的最好方法吗? 问题答案: 使用zeromq。

  • 本文向大家介绍改进Django中的表单的简单方法,包括了改进Django中的表单的简单方法的使用技巧和注意事项,需要的朋友参考一下 首先,search()视图对于空字符串的处理相当薄弱——仅显示一条”Please submit a search term.”的提示信息。 若用户要重新填写表单必须自行点击“后退”按钮, 这种做法既糟糕又不专业。如果在现实的案例中,我们这样子编写,那么Django的优

  • 问题内容: 有谁知道一种简单的方法将数据库从一台计算机复制到文件,然后将其导入另一台计算机? 问题答案: 以下是一些选择: mysqldump 做到这一点最简单,可以保证工作的方法是使用。请在此处查看实用程序的手册页: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html 基本上,它转储重建数据库内容所需的SQL脚本,包括创建表,触发器和其他对

  • 本文向大家介绍简单谈谈Java类与类之间的关系,包括了简单谈谈Java类与类之间的关系的使用技巧和注意事项,需要的朋友参考一下 类与类之间最常见的关系主要有三种:依赖(uses-a)、聚合(has-a)和继承(is-a)。 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念。 在线书店订单系统的主要功能是:注册用户可以登录到网上书店选购图书,在线填写订单,并支付购书款。书店确认已经收到购书款