Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Static initializer on a inner class?

Tags:

java

How to allow static initializer on a inner class like this:

public class MyClass {

    public class InnerClass {
        static {
            // do something
        }
        public bar(){
            // do something
        }
    }

    // method stuff
    public void foo() {
        // do something
    }

} 
like image 914
quarks Avatar asked Feb 10 '12 09:02

quarks


2 Answers

From JLS 8.1.3 Inner Classes and Enclosing Instances:

Inner classes may not declare static initializers (§8.7) or member interfaces.

What you may want is a nested class:

public static class InnerClass { // note "static"
like image 84
yshavit Avatar answered Oct 21 '22 10:10

yshavit


You need to define the InnerClass class as static. But, thereafter, it won't be a regular inner class.

like image 45
Abimaran Kugathasan Avatar answered Oct 21 '22 09:10

Abimaran Kugathasan