The source file name should match the name of the top-level class it contains


The problem

While the Java programming langauge requires that public top-level classes are declared in a source file matching their name (e.g.: for public class Foo {}, it is possible to declare a non-public top-level class in a file with a different name (e.g.: for class Foo {}).

The Google Java Style Guide §2.1 states, “The source file name consists of the case-sensitive name of the top-level class it contains, plus the .java extension.”


Since @SuppressWarnings cannot be applied to package declarations, this warning can be suppressed by annotating any top-level class in the compilation unit with @SuppressWarnings("ClassName").