我正在考虑为 Java 提供一个新功能,我想问一下为什么到目前为止它受到设计的限制:
public abstract class BodyPart {
abstract public void followBodyPart(BodyPart part);
}
public class Head extends BodyPart{
public void followBodyPart(Body body ) { //Why is this kind of implementation not allowed?
...
}
}
public class Body extends BodyPart{
public void followBodyPart(Head head ) { //and this
...
}
public void followBodyPart(Forearm leftForearm ) { //and also this
...
}
...
}
//Arm, Forearm, etc...
为什么 Head 中的 followBodyPart(Body body) 没有在 BodyPart 中实现 followBody?如果可以,优势就很明显了。
首先,IDE 将能够在其自动完成功能内将 Body 对象作为参数提供给 followBody,而不是 Head 无法遵循的任何其他 BodyParts 对象。
其次,当前版本的 Body 由一个函数和多个 instanceof 组成,可以删除。
最后,泛型在这里可以提供帮助,但不能解决问题,因为这段代码应该移植到 Java ME 设备上。
这个问题已经被问过了,在我在这里发现的不合适的论坛中
关于答案,我邀请您思考不同的问题。我知道任何实现 BodyPart 的东西都应该接受任何BodyPart,但是:我想要的是能够说 Head 能够接受A BodyPart 跟随。
谢谢。