首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何简单地将一个对象从同一个类继承到另一个对象

如何简单地将一个对象从同一个类继承到另一个对象
EN

Stack Overflow用户
提问于 2016-10-21 08:18:59
回答 5查看 157关注 0票数 1

我有个问题。例如,让我们考虑两个类:

代码语言:javascript
运行
复制
class Car extends Vehicle
class Train extends Vehicle

让我们假设车辆有很多字段--。我想把目标车扔到火车上。它们都扩展了Vehicle类,因此它们有许多共同的字段。我不想浪费时间来设置每个字段。在Java中有什么方法(可能是一个很好的库吗?)用最少的努力做这件事?

PS。反射可能是答案,然而,如果车辆类有更多的“复杂”类型的领域,它也将需要很多时间。

编辑:我想要创建一个基于其他对象的公共字段的对象。也许“演员”这个词是错的。是的,我知道它们是不同的,我只是想复制共同的字段。是的,我知道这是个糟糕的设计,我只是没有别的选择,我需要尽快修复写得不好的东西。

EN

回答 5

Stack Overflow用户

发布于 2016-10-21 08:23:54

这在Java中是不可能的。原因是汽车不是火车,尽管它们的大部分功能都是相同的。如果火车有一种方法ChooChoo,这显然对一辆车没有意义,但你试图在一辆作为火车的汽车上叫它,会发生什么呢?

解决这一问题的方法是尝试与车辆一起工作。如果您目前有一些与Trains一起工作的代码,但没有使用列车的任何细节,那么更改代码来处理车辆应该是安全的。如果它确实利用了火车的细节,那么当它通过非火车时,你期望它如何工作呢?

票数 3
EN

Stack Overflow用户

发布于 2016-10-21 08:24:44

请注意,CarTrain是两个不同的Vehicle具体类,因此不能在它们之间进行“强制转换”。我想您想要的是在两个对象之间复制公共属性。您可以使用来自阿帕奇春天的bean来实现这一点。

票数 2
EN

Stack Overflow用户

发布于 2016-10-21 08:29:37

您所说的完全可以通过某种反射方式实现;只要做一些小小的努力,就可以编写一个泛型实现,它需要两个不同的类,并尝试通过名称/类型和相互之间的传递值来匹配字段。例如,这个问题对您要寻找的内容有一些粗略的实现。

但我认为你应该通过继承来处理这件事。如果CarTrain都是Vehicle的,但是即使它们之间仍然有一些相似之处,也不能相互交换,那么您应该创建一个包含所有相似之处的Vehicle实现。然后,您可以简单地从这个常见的Car实现扩展您的TrainVehicle类。

e.g

代码语言:javascript
运行
复制
class MovingVehicle extends Vehicle //(class which contains similiarities)
class Car extends MovingVehicle
class Train extends MovingVehicle
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40171638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档