2016-06-15 5 views
0

サブクラスでスーパークラス静的メソッドを呼び出す必要があり、サブクラスで呼び出されたことに注意してください。次のコードはユースケースを示しています。サブクラスB.importantMethod()のメソッド呼び出しと、サブクラス://would like to get B hereで呼び出されたことを知る必要がある場所に注意してください。サブクラスで呼び出されるスーパークラスの静的メソッド

class A { 
    public static void importantMethod() { 
     System.out.println("???"); //would like to get B here 
    } 
} 

class B extends A { 
    //no implementation, just inheritance 
} 

public class Test { 
    public static void main(String[] args) { 
     B.importantMethod(); 
    } 
} 

これを達成する方法は、私には良いことです。私の試行は何もなくなった、私はいつもAで、Bではない。

+0

これは非常に奇妙なことです。あなたが解決したいことは何ですか - それを行うためのよりよい方法を見つける手助けをしてくれるかもしれません。 –

+0

おそらくGroovyを使ってこれを行うことができます。これは純粋なJavaを書くことができますが、Javaではできません –

答えて

2

これはまったく不可能です。静的メソッドは、常にそれを定義するクラスに属します。 importantMethodはクラスAのメソッドです。

1

静的メソッドはクラスメソッドであり、したがってそのクラスに属します。あなたが望むことをする方法はありません。詳細はthis topicを参照してください。 このように対処しようとしている問題に関する詳細情報を提供した場合は、代替ソリューションを見つける手助けをすることができます。

関連する問題