高尔夫球场示例:我们有类课程
,Track
,Tee
和Hole
。
public class Course {
private final List<Track> tracks;
}
public class Track {
private final Course parent;
private final Tee tee;
private final Hole hole;
}
public class Tee {
private final Track parent;
}
public class Hole {
private final Track parent;
}
这里有很多为人父母的事情。
球场
必须由18条赛道组成,这在高尔夫球场是很正常的
但是我遇到了一个问题。当我尝试调用Track
的构造函数时...
public Track(Course parent, Tee tee, Hole hole) {//}
... 我必须同时通过Tee
和Hole
的实例,但是。。。
public Hole(Track parent) {//}
... 这些函数的构造函数要求我传递一个Track
的实例。我陷入了一个递归问题。
我可以通过不再让每个父类
成为这些类的成员final
来“解决”这一问题,但这让人感觉很不舒服,就像糟糕的做法一样-没有理由不让它们成为final,因为它们在我的用例中永远不会改变。
我能想到的另一件事是,将类似这样的“父子”关系外包给不同类型的管理者;不过,对于做这样的事情也不太兴奋。
问题
处理这种“父子”关系的正确方法是什么,目标是最终确定它们,并简单快速地访问诸如#getParent()
之类的方法?
非常感谢。
我认为这不可能用final字段实现。您有一些类似于循环依赖的东西-您需要父级来初始化子级,同时在初始化同一父级时需要子级。我能想到的最好办法是将父字段设置为非final,并使用setter方法强制只设置一次字段。
public class Track {
private Course parent;
private final Tee tee;
private final Hole hole;
public Track(Tee tee, Hole hole) {
this.tee = tee;
this.hole = hole;
}
public void setParent(Course parent) {
if (this.parent != null) {
//already has been set, so not allowing it
//or throw exception, whatever you need
return;
}
this.parent = parent;
}
}
这应该使父字段实际上是最终的。
问题内容: 我想知道如何将某些函数返回的父对象转换为子类。 我不能更改A类。如果可以的话,我可以对A类实现functionIneed,但是由于代码的结构,这是不可能的。 问题答案: Python不支持“广播”。您将需要编写代码,以便它可以适当地进行初始化。
问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父
我有一个母公司类别(工具),有三个子公司(股票、债券、Etf)。父类还与类(InstrumentPrice)有一个OneToMany关系。JPA联接策略用于父实体和子实体之间。当一个子项被持久化(例如Stock)时,工具中的一个条目也会自动持久化,并具有所有公共属性。这很好用。但是,如何为类InstrumentPrice创建条目?我是否必须在保存股票后从DB读取实体工具,并使用Instrument
本文向大家介绍JavaScript中的继承之类继承,包括了JavaScript中的继承之类继承的使用技巧和注意事项,需要的朋友参考一下 继承简介 在JS中继承是一个非常复杂的话题,比其他任何面向对象语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。在JS中想要达到继承公用成员的目的,需要采取一系列措施。JS属于原型式继承,得益于这种灵活性,我们既可以
我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中
我以这种方式在实体结构中使用Joined Hibernate继承映射: 我想先保存一个用户,然后在另一个api中保存一个客户,并将该客户映射到第一个用户。所以我尝试用现有的用户id保存一个新客户: 但是,hibernate使用新生成的id(而不是固定传递的id)生成客户,并生成一个新用户。我的问题是:我怎样才能在孩子的父母之后救他?还是反正又有没有救孩子不救父母?