I am using a class to store some strings which I can access across the application. It looks like:

```
public final class Settings {
    public final static class Setting1 {
        public final static String CONFIG = "A config string";
        private Setting1 (){};
    }
    public final class Setting2 {
        public final static String CONFIG = "A config string";
        private Setting2 (){};
    }
}

```

I have found I can use either static nested class (e.g. Setting1) or inner class (e.g. Setting2). They both can be used in the same way:

```
System.out.println(Settings.Setting1.CONFIG); // Print: A config string
System.out.println(Settings.Setting2.CONFIG); // Print: A config string

```

So if the nested class will only contain final static fields, are there any different in using these two? Because of the private constructor, no instantiation is allowed. Does that mean these two classes are the same now?