この回答には、次のコードがあります。
//in a main method somewhere
Super instance = new Sub();
instance.method();
//...
public class Super {
public static void method() {
System.out.println("Super");
}
}
public class Sub extends Super {
public static void method() {
System.out.println("Sub");
}
}
これSuper
は期待どおりに出力されますが、インスタンスを指定して static を呼び出したいコードがいくつかありますSub.method()
。1つの解決策は次のとおりです。
public class Sub extends Super {
public static void sMethod() {
Super.sMethod();
System.out.println("Sub (static)");
}
public void method() {
super.method();
System.out.println("Sub (instance)");
}
}
ただし、自明ではない関数本体 (私の場合、パラメーターがクラスに許可されている制限内にあるかどうかを確認しています) では、多くのコードが繰り返されます。これを解決するための適切な設計パターンはありますか? リフレクションはおそらくうまくいくでしょうが、それは最後の手段のように感じます.
もう少し考えてみて、これでよろしいでしょうか?
public class Sub extends Super {
public static void sMethod() {
Super.sMethod();
System.out.println("Sub (static)");
}
public void method() {
Sub.sMethod();
}
}