1

ネストされたクラスに関する Java の問題があります。

私の最初のクラス構造は次のようになりました。

public class TopClass {

    public void mainMethod() {
        // uses the different "method" methods from 
        // NestedClass-implementing nested classes
    }            

    private interface NestedClass {
        public void method();
    }    

    private class NestedClass1 {
        public void method() {
        }
    }    

    private class NestedClass2 {
        public void method(){
        }
    }    
}

method()しかし、これらのメソッドは主に静的であるべきであるため、これらのメソッドを静的にしたいと考えています。

それらを静的クラスに含めずに静的にすることはできませんが、それは問題ありません。クラスを静的にしました。とにかくそうする必要があります。

現在、次のようになっています。

public class TopClass {

    public void mainMethod() {
        // uses the different "method" methods from 
        // NestedClass-implementing nested classes
    }            

    private static interface NestedClass {
        public void method();
    }    

    private static class NestedClass1 {
        public static void method() {
        }
    }    

    private static class NestedClass2 {
        public static void method(){
        }
    }    
}

しかし、その後、問題が始まります。This static method cannot hide the instance method from TopClass.NestedClassEclipse でこのメッセージが表示されるため、静的メソッドは非静的インターフェイス メソッドから正しく継承されません。

インターフェイス メソッドを静的にすると、次のエラーが表示されます。Illegal modifier for the interface method method; only public & abstract are permitted

だから私は抽象クラスを考えて、これを試しました:

public class TopClass {

    public void mainMethod() {
        // uses the different "method" methods from 
        // NestedClass-implementing nested classes
    }    

    private static abstract class NestedClass {
        public static abstract void method();
    }    

    private static class NestedClass1 {
        public static void method() {
        }
    }    

    private static class NestedClass2 {
        public static void method(){
        }
    }    
}

しかし繰り返しになりますが、一見抽象的なメソッドは static: と宣言することはできませんThe abstract method method in type NestedClass can only set a visibility modifier, one of public or protected

(抽象クラス メソッドで) static を残すと、NestedClass1 & 2: のメソッド メソッドでエラー this が発生しますThis static method cannot hide the instance method from TopClass.NestedClass

静的メソッドをカバーするためのある種の上部構造を宣言する方法はありませんか?

編集:私が実際に解決しようとしている問題は、メソッドへの参照を格納するための Java の可能性の欠如です。代わりに、メソッドを 1 つだけ持つこれらのクラスをすべて用意しますが、それらを List fe に格納するには、上部構造によって「キャッチ」できる必要があります。匿名クラスまたは列挙型を試すヒントを得たので、それを試してみます。

4

4 に答える 4

6

インターフェースと静的は一緒にはなりません。まったく。静的メソッドにパターンを作成/適用するための Java サポートはありません。

于 2012-05-14T20:32:17.510 に答える
1

インターフェイス/抽象クラスがネストされているという事実は、問題とは無関係です。
あなたはできません。Java では、一部のクラスに静的メソッドを実装するよう強制する方法はありません。泣いて降伏し、インスタンスメソッドを使用してください。

于 2012-05-14T20:37:13.623 に答える
1

static abstract矛盾です。静的メソッドは、他の言語のクラス メソッドとは異なります。単一のクラスで実行される静的メソッドを作成すると、サブクラスに継承されたり、その実装が延期されたりすることはありません。

これらのメソッドを静的にしたい理由を説明していません。これらのメソッドをサブクラスで定義したい場合は、そうすべきではありません。

于 2012-05-14T20:37:30.020 に答える