๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ชฉ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.

[JAVA] Arrays.asList java.lang.UnsupportedOperationException

๐Ÿ—ฃ Language/JAVA
    ๋ฐ˜์‘ํ˜•

    ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์›๋ณธ ๋ฐฐ์—ด๋ฅผ ๋ณต์‚ฌํ•œ ํ›„์— ๋ณต์‚ฌ๋œ ๋ฐฐ์—ด์•ˆ์— ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์ž‘์—…์ด์ง€๋งŒ ์ฒ˜์Œ์— ์–ด๋–ป๊ฒŒ ์ž˜๋ผ์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผํ• ์ง€ ๋ญ”๊ฐ€ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์—†์„์ง€ ์ƒ๊ฐํ•˜๋ฉฐ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ Arrays.asList๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€๊ฒฝ(casting)ํ•˜์—ฌ add ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

     

    ํ•˜์ง€๋งŒ ์ œ๋ชฉ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  ๋˜ ๋‹ค์‹œ ๊ตฌ๊ธ€๋ง์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋ฐœ๊ฒฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

     

    Arrays.asList๋กœ ์ƒ์„ฑ๋œ List๊ฐ์ฒด๋Š” immutableํ•œ ๊ฐ์ฒด์ด๋ฏ€๋กœ add ๋˜๋Š” remove๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

     

    immutableํ•˜๋‹ค๋Š”๊ฒŒ ์ฒ˜์Œ์—๋Š” ๋ฌด์Šจ ์˜๋ฏธ์ธ์ง€ ์™€๋‹ฟ์ง€ ์•Š์•„์„œ ์˜์–ด ๋‹จ์–ด๋ฅผ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

     

    immutable ์‚ฌ์ „์  ์˜๋ฏธ(๋œป)

     

    immutableํ•˜๋‹ค๋Š”๊ฒƒ์€ ๋ณ€ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ  Arrays.asList๋กœ ์ƒ์„ฑ๋œ ๋ฆฌ์ŠคํŠธ๋Š” ๋ณ€ํ•  ์ˆ˜ ์—†๋Š” ๋ฆฌ์ŠคํŠธ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— add๋‚˜ remove๋ฅผ ํ†ตํ•ด์„œ ๋ณ€ํ™”๋ฅผ ์ฃผ๋ คํ–ˆ์„ ๋•Œ ์ œ๋ชฉ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๊ฒƒ์ž…๋‹ˆ๋‹ค.

     

    โ€ป ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•ด์„œ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๊ฑฐ๋‚˜ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ถ”ํ›„์— ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•