我有个问题。例如,让我们考虑两个类:
class Car extends Vehicle
class Train extends Vehicle让我们假设车辆有很多字段--。我想把目标车扔到火车上。它们都扩展了Vehicle类,因此它们有许多共同的字段。我不想浪费时间来设置每个字段。在Java中有什么方法(可能是一个很好的库吗?)用最少的努力做这件事?
PS。反射可能是答案,然而,如果车辆类有更多的“复杂”类型的领域,它也将需要很多时间。
编辑:我想要创建一个基于其他对象的公共字段的对象。也许“演员”这个词是错的。是的,我知道它们是不同的,我只是想复制共同的字段。是的,我知道这是个糟糕的设计,我只是没有别的选择,我需要尽快修复写得不好的东西。
发布于 2016-10-21 08:23:54
这在Java中是不可能的。原因是汽车不是火车,尽管它们的大部分功能都是相同的。如果火车有一种方法ChooChoo,这显然对一辆车没有意义,但你试图在一辆作为火车的汽车上叫它,会发生什么呢?
解决这一问题的方法是尝试与车辆一起工作。如果您目前有一些与Trains一起工作的代码,但没有使用列车的任何细节,那么更改代码来处理车辆应该是安全的。如果它确实利用了火车的细节,那么当它通过非火车时,你期望它如何工作呢?
发布于 2016-10-21 08:24:44
请注意,Car和Train是两个不同的Vehicle具体类,因此不能在它们之间进行“强制转换”。我想您想要的是在两个对象之间复制公共属性。您可以使用来自阿帕奇或春天的bean来实现这一点。
发布于 2016-10-21 08:29:37
您所说的完全可以通过某种反射方式实现;只要做一些小小的努力,就可以编写一个泛型实现,它需要两个不同的类,并尝试通过名称/类型和相互之间的传递值来匹配字段。例如,这个问题对您要寻找的内容有一些粗略的实现。
但我认为你应该通过继承来处理这件事。如果Car和Train都是Vehicle的,但是即使它们之间仍然有一些相似之处,也不能相互交换,那么您应该创建一个包含所有相似之处的Vehicle实现。然后,您可以简单地从这个常见的Car实现扩展您的Train和Vehicle类。
e.g
class MovingVehicle extends Vehicle //(class which contains similiarities)
class Car extends MovingVehicle
class Train extends MovingVehiclehttps://stackoverflow.com/questions/40171638
复制相似问题