static์ด๋?
(์ ์ ์ธ, ์์ง์์ด ์๋)
static ์ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ jvm์ static ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค.
static ์์ญ์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ด ์์ํ๊ณ ์ข ๋ฃํ ๋๊น์ง ์ด์ ์์ด
๋ณ๋์ ์ด๊ธฐํ ๊ณผ์ ์ ํ์๋ก ํ์ง ์๊ณ static์ด ์ ์ธ๋ ๋ณ์, ๋ฉ์๋์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋ค.
static์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ๋ ํด๋น ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ค๋ ์๋ฏธ.
๋์ผํ ๊ฐ์ฒด๋ก ๊ฐ๋ง ๋ฐ๊พธ์ด ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์๊ณผ ๋์์
๋์ผํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ง ๋ฐ๊พธ์ด ์ฌ์ฉํ๋ค๋ ์ ์์ ๋ณ์์ ๊ฐ์ ์ ์คํ๊ฒ ๋ฐ๊พธ์ด์ผ ํ๋ค๋ ์๊ฐ๋ ํด์ผํ๋ค.
final์ด๋?
๋ถ๋ณ๊ณผ ๊ด๋ จ๋ ์์ฑ์ด ์๋๋ผ ์ฌํ ๋น ๋ฐฉ์ง์ ๊ด๋ จ๋ ์์ฑ.
final์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฌํ ๋น์ด ๋ฐฉ์ง๋๋ฏ๋ก, ์์์ด๋ ๊ฐ ์ฌ ์ด๊ธฐํ ๋ฑ์ด ๋ถ๊ฐ๋ฅํด์ง๋ค.
public class MutableTest {
private final Map<String, Object> mutableMap = new HashMap<>();
public void testFinal() {
// ์ฌํ ๋น ์๋จ
// mutableMap = new HashMap<>();
mutableMap.put("choco", "M&M");
mutableMap.put("jelly", "haribo");
System.out.println(mutableMap.toString());
}
public static void main(String[] args) {
MutableTest mutableTest = new MutableTest();
mutableTest.testFinal();
}
}
์ฌํ ๋น์ ์๋์ง๋ง ๊ฐ์ ๋ณ๊ฒฝ์ ๊ฐ๋ฅํด์ง๋ค.
๋ณดํต Collectionsํ์ (Map, List, Set)์์ ๋ง์ด ์ฌ์ฉ๋๊ณ ,
๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ธ int, boolean, char ๋ฑ๋ฑ์์๋ ์ฌํ ๋น์ด ์๋๋ ๊ฐ์ ๋ณ๊ฒฝํ ๋ฐฉ๋ฒ์ด ์์.
(logger ๊ฐ์ ๊ฐ์ด ๋ณํ์ง ์๋ ๊ฒฝ์ฐ๋ final๋ก ํ ๋นํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.)
์์ฝ: private static final๊ณผ private final์ ์ฐจ์ด
private static final
์ฌํ ๋นํ์ง ๋ชปํ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์ ํ ๋ฒ ์ฌ๋ผ๊ฐ๋ฉด ๊ฐ์ ๊ฐ์ ํด๋์ค ๋ด๋ถ์ ์ ์ฒด ํ๋, ๋ฉ์๋์์ ๊ณต์ ํจ.
private final
์ฌํ ๋นํ์ง ๋ชปํ๋ฉฐ, ํด๋น ํ๋, ๋ฉ์๋ ๋ณ๋ก ํธ์ถํ ๋๋ง๋ค ์๋กญ๊ฒ ๊ฐ์ ํ ๋นํจ.(์ธ์คํด์คํ)