Why is a static class illegal in Java?

Viewed 79202

I'm developing an Android application but have hit a bit of a brick wall, I keep getting the error:

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

This happened after following this answer to another SO question. Here is the code that I have:

package com.package.name;

/* Imports were here */

public static class FavsPopupFragment extends SherlockDialogFragment {

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

The error appears on the class name. I don't understand why this won't work, please help. Thank you.

9 Answers

The access modifier supported for top level are class are as follows :

1) public

2) default

3) abstract

4) final

5) strictfp.

Reason: Top level class

Because the static keyword is meant for providing memory and executing logic without creating Objects, a class does not have a value logic directly, so the static keyword is not allowed for outer class and mainly as mentioned above static can't be used at Package level. It only used within the Class level.

Related