Item 25. Limit File Top-level Class
ํฑ๋ ๋ฒจ ํด๋์ค๋ ํ ํ์ผ์ ํ๋๋ง ๋ด์ผ๋ผ
์์ค ํ์ผ ํ๋์ ํฑ๋ ๋ฒจ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๋ ๊ฒ์ ๊ฐ๋ฅ์ ํ์ง๋ง ์๋ฌด๋ฐ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ ํผํด์ผ ํ๋ค. ํ ํ์ผ ์์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ ์ธํ๋ฉด ํ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ง๋ก ์ ์ํ ์ ์๊ฒ ๋๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฉด ์ด๋ ์์ค ํ์ผ์ ๋จผ์ ์ปดํ์ผํ๋๋์ ๋ฐ๋ผ ๋์์ด ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
// Foo.java
class Foo {
static final String NAME = "Foo - foo";
}
class Bar {
static final String NAME = "Foo - bar";
}
// Bar.java
class Bar {
static final String NAME = "Bar - bar";
}
class Foo {
static final String NAME = "Bar - foo";
}
// Main.java
public class Main {
public static void main(String[] args) {
System.out.println(Foo.NAME);
System.out.println(Bar.NAME);
}
}
IDE ํ๊ฒฝ์์๋ ์ ์ด์ ์ค๋ณต๋ ํด๋์ค๋ช
์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
ํ์ง๋ง javac
๋ช
๋ น์ด๋ฅผ ํตํด ์ง์ ์ปดํ์ผํ๋ฉด ์คํํ ๋ช
๋ น์ด์ ๋ค์ด๊ฐ ์ธ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
> rm *.class
> javac Main.java
> java Main
Foo - foo
Foo - bar
> rm *.class
> javac Main.java Foo.java
> java Main
Foo - foo
Foo - bar
> rm *.class
> javac Main.java Bar.java
> java Main
Bar - foo
Bar - bar
> rm *.class
> javac Main.java Foo.java Bar.java
Bar.java:1: error: duplicate class: Bar
class Bar {
^
Bar.java:5: error: duplicate class: Foo
class Foo {
^
2 errors
ํด๊ฒฐ ๋ฐฉ๋ฒ
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์ฃผ ๊ฐ๋จํ๊ฒ, ์์ค ํ์ผ์ ๋ถ๋ฆฌํ๋ฉด ํด๊ฒฐ๋๊ณ , ๊ผญ ๊ฐ์ ํ์ผ์ ์ฌ๋ฌ ํฑ๋ ๋ฒจ ํด๋์ค๋ฅผ ์ ์ธํด์ผ ํ๋ค๋ฉด ์ ์ ๋ฉค๋ฒ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
class Main {
public static void main(String[] args) {
System.out.println(Foo.NAME);
System.out.println(Bar.NAME);
}
private static class Foo {
static final String NAME = "foo";
}
private static class Bar {
static final String NAME = "bar";
}
}
Last updated
Was this helpful?