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 は、オートコンプリート機能内で、Head が追従できない他の BodyParts オブジェクトの代わりに、FollowBody のパラメーターとして Body オブジェクトを提供できます。
第 2 に、Body の現在のバージョンは 1 つの関数と多数の instanceof で構成されており、これらは削除できる可能性があります。
最後に、このコードは Java ME デバイスに移植する必要があるため、ジェネリックはここで役立ちますが、問題を解決することはできません。
ここで発見したように、この質問は不適切なフォーラムですでに尋ねられています
答えに関しては、別の考え方をしてください。BodyPart を実装するものはすべてBodyPart を受け入れる必要があることを理解していますが、私が望むのは、Head がA BodyPart を 受け入れることができると言えるようにすることです。
ありがとう。