为什么javac不抱怨每个文件有多个公共类?

Pat*_*Pat 5 java

这是我的示例类,它使用Java 1.6.0_14版编译(并运行):

import java.util.List;
import java.util.ArrayList;

public class Sample {
  List<InnerSample> iSamples;

  public Sample() {
    iSamples = new ArrayList<InnerSample>();
    iSamples.add(new InnerSample("foo"));
    iSamples.add(new InnerSample("bar"));
  }

  public static void main(String[] args) {
    System.out.println("Testing...");
    Sample s = new Sample();
    for (InnerSample i : s.iSamples) {
      System.out.println(i.str);
    }
  }

  public class InnerSample {
    String str;
    public InnerSample(String str) {
      this.str = str;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道你应该在Java中每个文件只有一个公共类,但这更像是一个约定而不是一个规则?

Mat*_*all 12

您不允许每个文件有多个顶级类.InnerSample是一个内在阶级.

这是单个文件中禁止的示例:

public class Sample {

}

public class Sample2 {

}
Run Code Online (Sandbox Code Playgroud)

JLS§7.6.