Java

Java

[Java] ์ง๋ ฌํ™” Serializable

Serializable ์ธํ„ฐํŽ˜์ด์ŠคDTO๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„๋ณด์ž.  Serializable ์ธํ„ฐํŽ˜์ด์Šค์˜ API์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์—†๋‹ค.๊ตฌํ˜„ํ•ด์•ผํ•  ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š”๋ฐ ์™œ ์žˆ์„๊นŒ. ๐ŸŒŸ ์ž๋ฐ”์—์„œ ์ง๋ ฌํ™”๋ž€ ? ๐Ÿ‘‰ ์ž๋ฐ” ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด ๋˜๋Š” ๋ฐ์ดํ„ฐ(JVM์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผ)๋ฅผ ์™ธ๋ถ€์˜ ์ž๋ฐ” ์‹œ์Šคํ…œ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก byte ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ (์ง๋ ฌํ™”)๊ณผ byte๋กœ ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ (์—ญ์ง๋ ฌํ™”)์ด๋‹ค.   Serializable์ด ํ•„์š”ํ•œ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•  ๋•Œ์ €์žฅํ•œ ๊ฐ์ฒด๋ฅผ ์ฝ์„ ๋•Œ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ๋•Œ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ›์„ ๋•Œ๐Ÿ‘‰ ์ฆ‰, ๋งŒ๋“  ํด๋ž˜์Šค๊ฐ€ ..

Java

[Java] ์ œ๋„ค๋ฆญ

์ œ๋„ค๋ฆญ์ด๋ž€ ?ํƒ€์ž… ํ˜• ๋ณ€ํ™˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ ์„ ์‚ฌ์ „์— ์—†์• ์คŒ  public class CastingDto implements Serializable { private Object object; public void setObject(Object object) { this.object = object; } public Object getObject() { return object; }} โœณ๏ธ ์œ„์˜ ์ฝ”๋“œ์—์„œ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉดpublic class CastingGenericDto implements Serializable { private T object; public void setObject(T obj) { this.object..

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์›์น™ ไธญ

61. ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…๋ณด๋‹ค๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๊ธฐint, double, boolean ๐Ÿ‘‰ ๊ธฐ๋ณธํƒ€์ž…String, List ๐Ÿ‘‰ ์ฐธ์กฐํƒ€์ž…Integer, Double, Boolean ๐Ÿ‘‰ ๊ฐ๊ฐ์˜ ๊ธฐ๋ณธ ํƒ€์ž…์— ๋Œ€์‘ํ•˜๋Š” ์ฐธ์กฐํƒ€์ž… ๐Ÿ‘‰ ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…  โœณ๏ธ ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…์˜ ์ฐจ์ด์  ๊ธฐ๋ณธ ํƒ€์ž…์€ ๊ฐ’๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‚˜, ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…์€ ๊ฐ’์— ๋”ํ•ด ์‹๋ณ„์„ฑ์ด๋ž€ ์†์„ฑ์„ ๊ฐ€์ง ๐Ÿ‘‰ ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๋‘ ์ธ์Šคํ„ด์Šค๋Š” ๊ฐ’์ด ๊ฐ™์•„๋„ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค๊ณ  ์‹๋ณ„๋  ์ˆ˜ ์žˆ์Œ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฐ’์€ ์–ธ์ œ๋‚˜ ์œ ํšจํ•˜๋‚˜, ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…์€ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์ธ null์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ๊ธฐ๋ณธ ํƒ€์ž…์ด ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž… ๋ณด๋‹ค ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฉด์—์„œ ๋” ํšจ์œจ์  โœณ๏ธ ์ฃผ์˜ํ•ด์•ผํ•  ์  Comparator naturalOrder = (i, j) ..

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์›์น™ ไธŠ

57. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ์ง€์—ญ๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œ๋กœ ์ค„์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ  ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์„ ๋‚ฎ์ถ”์ž๐Ÿ‘‰ ๊ทธ ๋ฐฉ๋ฒ•์€ "๊ฐ€์žฅ ์ฒ˜์Œ ์“ฐ์ผ ๋•Œ ์„ ์–ธํ•˜๊ธฐ" & ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜๊ธฐ โœณ๏ธ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์„ ์–ธํ•ด๋‘๋ฉด...? ๋ฏธ๋ฆฌ ์„ ์–ธํ•ด๋‘๋ฉด ์ฝ”๋“œ๊ฐ€ ์–ด์ˆ˜์„ ํ•ด์ ธ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง ๋ณ€์ˆ˜๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์—๋Š” ํƒ€์ž…๊ณผ ์ดˆ๊นƒ๊ฐ’์ด ๊ธฐ์–ต๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ ๐ŸŒŸ ๊ฑฐ์˜ ๋ชจ๋“  ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•จ๋งŒ์•ฝ, ์ดˆ๊ธฐํ™”์— ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ถฉ๋ถ„ํ•ด์งˆ ๋•Œ๊นŒ์ง€ ์„ ์–ธ์„ ๋ฏธ๋ค„์•ผ ํ•จ๋‹ค๋งŒ try-catch ๋ฌธ์—์„œ๋Š” ์˜ˆ์™ธ์ธ๋ฐ, ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ‘œํ˜„์‹์—์„œ ๊ฒ€์‚ฌ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋ฉด try ๋ธ”๋ก ์•ˆ์—์„œ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•จ ๐Ÿ‘‰ ๊ทธ๋ ‡์ง€ ์•Š์„ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ธ”๋ก์„ ๋„˜์–ด ๋ฉ”์„œ๋“œ์—๊นŒ์ง€ ์ „..

Java/๐Ÿ“• Effective Java

[๐Ÿ“•Effective Java] ์—ด๊ฑฐ ํƒ€์ž…๊ณผ ์–ด๋…ธํ…Œ์ด์…˜ ไธ‹

38. ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์—ด๊ฑฐ ํƒ€์ž…์ด ํ•„์š”ํ•˜๋ฉด ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉํ•˜๊ธฐ์—ด๊ฑฐ ํƒ€์ž… ์ž์ฒด๋Š” ํ™•์žฅํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ทธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋ณธ ์—ด๊ฑฐ ํƒ€์ž…์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์Œ  public interface Operation { double apply(double x, double y);}public enum BasicOperation implements Operation { PLUS("+") { public double apply(double x, double y) { return x + y; } }, MINUS("-") { public double apply(double x, double y) { return x - y; } }, TIMES("*"..

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ์—ด๊ฑฐ ํƒ€์ž…๊ณผ ์–ด๋…ธํ…Œ์ด์…˜ ไธŠ

34. int ์ƒ์ˆ˜ ๋Œ€์‹  ์—ด๊ฑฐ ํƒ€์ž… ์‚ฌ์šฉํ•˜๊ธฐ์—ด๊ฑฐ ํƒ€์ž… = ์ผ์ • ๊ฐœ์ˆ˜์˜ ์ƒ์ˆ˜ ๊ฐ’์„ ์ •์˜ํ•œ ๋‹ค์Œ, ๊ทธ ์™ธ์˜ ๊ฐ’์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ํƒ€์ž… โœด๏ธ ์—ด๊ฑฐ ํŒจํ„ด์˜ ๋‹จ์  ํƒ€์ž… ์•ˆ์ „ ๋ณด์žฅ Xํ‘œํ˜„๋ ฅ ์ข‹์ง€ Xํ‰๋ฒ”ํ•œ ์ƒ์ˆ˜๋ฅผ ๋‚˜์—ดํ•œ ๊ฒƒ์ด๋ผ ์ƒ์ˆ˜์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ํด๋ผ์ด์–ธํŠธ๋„ ๋ฐ˜๋“œ์‹œ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•ด์•ผ ํ•จ์ •์ˆ˜ ์ƒ์ˆ˜๋Š” ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์›€๐Ÿ‘‰ ์—ด๊ฑฐ ํƒ€์ž… (ENUM type)์ด ๋Œ€์•ˆpublic enum Apple {FUJI, PIPPIN, GRANNY_SMITH}public enum Orange {NAVEL, TEMPLE, BLOOD}โœณ๏ธ ์—ด๊ฑฐ ํƒ€์ž…  ์—ด๊ฑฐ ํƒ€์ž… ์ž์ฒด๋Š” ํด๋ž˜์Šค์ƒ์ˆ˜ ํ•˜๋‚˜๋‹น ์ž์‹ ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜์”ฉ ๋งŒ๋“ค์–ด public static final ํ•„๋“œ๋กœ ๊ณต๊ฐœ๋ฐ–์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ finalํด๋ผ์ด์–ธ..

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ์ œ๋„ค๋ฆญ ไธŠ

์ œ๋„ค๋ฆญ์ž๋ฐ” 5๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ผ ๋•Œ๋งˆ๋‹ค ํ˜•๋ณ€ํ™˜ํ•  ํ•„์š” ์—†์Œ์ปฌ๋ ‰์…˜์ด ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ์ปดํŒŒ์ผ๋Ÿฌ์— ์•Œ๋ ค์คŒ ๐Ÿ‘‰ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์•Œ์•„์„œ ํ˜•๋ณ€ํ™˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ์— ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋จ ๐Ÿ‘‰ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค or ์ œ๋„ค๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค = ์ œ๋„ค๋ฆญ ํƒ€์ž…๋งค๊ฐœ๋ณ€์ˆ˜ํ™” ํƒ€์ž…  = List ๐Ÿ‘‰ String์€ ์ •๊ทœ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜ E (List)์— ํ•ด๋‹นํ•˜๋Š” ์‹ค์ œ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜  26. Raw ํƒ€์ž…์€ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ธฐ raw ํƒ€์ž…์ด๋ž€ ์ œ๋„ค๋ฆญ ํƒ€์ž…์—์„œ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋ฅผ ๋งํ•จex). List์˜ raw ํƒ€์ž…์€ List์ž„ ๐Ÿ‘‰ ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ํ•œ์ฐธ ๋’ค์ธ ๋Ÿฐํƒ€์ž„์—์•ผ ์•Œ์•„์ฑŒ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ ! โœณ๏ธ ์ปฌ๋ ‰์…˜์˜ raw ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ // Stamp ์ธ์Šคํ„ด์Šค๋งŒ ์ทจ๊ธ‰private f..

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ไธ‹

23. ํƒœ๊ทธ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ ํ™œ์šฉํ•˜๊ธฐํƒœ๊ทธ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค ๐Ÿ‘‰ ์ƒ์ˆ˜ ํ•„๋“œ๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค, ์—ด๊ฑฐํ˜•(enum) ๋“ฑ์„ ํ™œ์šฉํ•ด์„œ ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•˜๋Š”์ง€ ์‹๋ณ„class Figure { enum Shape {RECTANGLE, CIRCLE}; // ํƒœ๊ทธ ํ•„๋“œ - ํ˜„์žฌ ๋ชจ์–‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. final Shape shape; // ๋‹ค์Œ ํ•„๋“œ๋“ค์€ ๋ชจ์–‘์ด ์‚ฌ๊ฐํ˜•(RECTANGLE)์ผ ๋•Œ๋งŒ ์“ฐ์ธ๋‹ค. double length; double width; // ๋‹ค์Œ ํ•„๋“œ๋Š” ๋ชจ์–‘์ด ์›(CIRCLE)์ผ ๋•Œ๋งŒ ์“ฐ์ธ๋‹ค. double radius; // ์›์šฉ ์ƒ์„ฑ์ž Figure(double radius) { shape = Shape.CIRCLE; ..

soogoori
'Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก