1. ホーム
  2. java

[解決済み] なぜJavaでは静的なクラスは違法なのですか?

2022-02-14 19:52:57

質問

Androidアプリケーションを開発しているのですが、エラーが出てしまい、困っています。

Illegal modifier for the class FavsPopupFragment; only public, abstract & final are permitted

この現象は、以下のようになります。 この回答 を別のSOの質問へ。以下は、私が持っているコードです。

package com.package.name;

/* Imports were here */

public static class FavsPopupFragment extends SherlockDialogFragment {

    static FavsPopupFragment newInstance() {
        FavsPopupFragment frag = new FavsPopupFragment();
        return frag;
    }
}

クラス名でエラーが表示されます。なぜうまくいかないのか理解できません、助けてください。ありがとうございます。

解決方法を教えてください。

トップレベルのスタティック・クラスは作成できません。これはコンパイラがあなたに伝えようとしていることです。答えも見てみましょう。 こちら については 何故 ということになります。その要点は

静的なものは、そのクラスのインスタンスが が自立する。あるいは、その逆で、非静的な内部クラスは (=インスタンス内部クラス)は外部クラスのインスタンスなしでは存在できません。 クラスがあります。トップレベルクラスはアウタークラスを持たないので、トップレベルクラスは は静的でなければならない。

すべてのトップレベルクラスは静的であるため、static キーワードは は無意味です。