public class Main {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
}
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
}
Now suppose you define both
Utensil
and Dessert
in a single source file named Utensil.java
:
// Two classes defined in one file. Don't ever do this!
class Utensil {
class Utensil {
static final String NAME = "pan";
}
class Dessert {
static final String NAME = "cake";
}
}
class Dessert {
static final String NAME = "cake";
}
// Two classes defined in one file. Don't ever do this!
class Utensil {
static final String NAME = "pot";
}
class Dessert {
static final String NAME = "pie";
}
class Utensil {
static final String NAME = "pot";
}
class Dessert {
static final String NAME = "pie";
}
// Static member classes instead of multiple top-level classes
public class Test {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
private static class Utensil {
static final String NAME = "pan";
}
private static class Dessert {
static final String NAME = "cake";
}
}
public class Test {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
private static class Utensil {
static final String NAME = "pan";
}
private static class Dessert {
static final String NAME = "cake";
}
}
The lesson is clear: Never put multiple top-level classes or interfaces in a single source file.
This in turn guarantees that the class files generated by compilation, and the behavior of the resulting program, are independent of the order in which the source files are passed to the compiler.
No comments:
Post a Comment