Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>If you declare a nested class in an interface it is always <em>public</em> and <em>static</em>. So:</p> <pre><code>public interface Levels{ class Items { public String value; public String path; public String getValue() {return value;} } } </code></pre> <p>Is exactly the same as </p> <pre><code>public interface Levels{ public static class Items { public String value; public String path; public String getValue() {return value;} } } </code></pre> <p>And even</p> <pre><code>public interface Levels{ static class Items { public String value; public String path; public String getValue() {return value;} } } </code></pre> <p>I've checked this with javap -verbose and they all produce</p> <pre><code>Compiled from "Levels.java" public class Levels$Items extends java.lang.Object SourceFile: "Levels.java" InnerClass: public #14= #3 of #23; //Items=class Levels$Items of class Levels minor version: 0 major version: 50 Constant pool: const #1 = Method #4.#21; // java/lang/Object."&lt;init&gt;":()V const #2 = Field #3.#22; // Levels$Items.value:Ljava/lang/String; const #3 = class #24; // Levels$Items const #4 = class #25; // java/lang/Object const #5 = Asciz value; const #6 = Asciz Ljava/lang/String;; const #7 = Asciz path; const #8 = Asciz &lt;init&gt;; const #9 = Asciz ()V; const #10 = Asciz Code; const #11 = Asciz LineNumberTable; const #12 = Asciz LocalVariableTable; const #13 = Asciz this; const #14 = Asciz Items; const #15 = Asciz InnerClasses; const #16 = Asciz LLevels$Items;; const #17 = Asciz getValue; const #18 = Asciz ()Ljava/lang/String;; const #19 = Asciz SourceFile; const #20 = Asciz Levels.java; const #21 = NameAndType #8:#9;// "&lt;init&gt;":()V const #22 = NameAndType #5:#6;// value:Ljava/lang/String; const #23 = class #26; // Levels const #24 = Asciz Levels$Items; const #25 = Asciz java/lang/Object; const #26 = Asciz Levels; { public java.lang.String value; public java.lang.String path; public Levels$Items(); Code: Stack=1, Locals=1, Args_size=1 0: aload_0 1: invokespecial #1; //Method java/lang/Object."&lt;init&gt;":()V 4: return LineNumberTable: line 2: 0 LocalVariableTable: Start Length Slot Name Signature 0 5 0 this LLevels$Items; public java.lang.String getValue(); Code: Stack=1, Locals=1, Args_size=1 0: aload_0 1: getfield #2; //Field value:Ljava/lang/String; 4: areturn LineNumberTable: line 7: 0 LocalVariableTable: Start Length Slot Name Signature 0 5 0 this LLevels$Items; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload