Java/๋ฌธ๋ฒ•

[Java ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ] final

soowitty 2024. 1. 27. 01:24
๐Ÿ’ก ๋Œ€๋ถ€๋ถ„์˜ ๋‚ด์šฉ์„ ์ ํ”„ ํˆฌ ์ž๋ฐ” ์—์„œ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

final

์ž๋ฃŒํ˜•์— ๊ฐ’์„ ๋‹จ ํ•œ๋ฒˆ๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐ•์ œํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.

๊ฐ’์„ ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ์•ˆ ๋  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

final int n = 123;
n = 456; // ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ!!!

 

list์™€ final

๋ฆฌ์ŠคํŠธ๋„ final๋กœ ์„ ์–ธํ•˜๋ฉด ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ, ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์„ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค. (์žฌํ• ๋‹น๋งŒ ๋ถˆ๊ฐ€๋Šฅํ•  ๋ฟ.)

final ArrayList<String> a = new ArrayList<>(Arrays.asList("a", "b"));
a = new ArrayList<>(Arrays.asList("c", "d"));  // ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ!!!
a.add("c");  // ์—๋Ÿฌ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ!!

 

๋”ฐ๋ผ์„œ, ๋งŒ์•ฝ ๊ฐ’์„ ๋”ํ•˜๊ณ  ๋นผ๋Š” ๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด List.of๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๋ฆฌ์ŠคํŠธ(Unmmodifiable List)๋กœ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

final List<String> a = List.of("a", "b");
a.add("c");  // UnsupportedOperationException ๋ฐœ์ƒ