2023. 1. 9. 10:43ใJAVA/Effective JAVA
item02. ์์ฑ์์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง๋ค๋ฉด ๋น๋๋ฅผ ๊ณ ๋ คํ๋ผ.
" p21. ๊ฐ๋ณ์ธ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ ์ ์๋ค. "
๊ฐ๋ณ ์ธ์ varargs๋?
: ์ฌ๋ฌ ์ธ์๋ฅผ ๋ฐ์ ์ ์๋ ๊ฐ๋ณ์ ์ธ argument๋ฅผ ๋งํ๋ค.
๋งค๊ฐ๋ณ์๋ก ๋ค์ด์ค๋ ๊ฐ์ ๊ฐ์์ ์๊ด์์ด ๋์ ์ผ๋ก ์ธ์๋ฅผ ๋ฐ์ ๊ฐ๋ฅํ๋๋ก ํด์ฃผ๋ ๋ฌธ๋ฒ์ด๋ค.
๊ฐ๋ณ์ธ์๋ ํ๋ผ๋ฏธํฐ๋ค์ ํต์งธ๋ก ๋ฐฐ์ด๋ก ๋ฐ์๋ค์ฌ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋์ ์ผ๋ก ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ์ ์๋ค.
๊ฐ๋ณ์ธ์๋ jdk 1.5 ๋ถํฐ ์ถ๊ฐ๋ ์ค๋์ ๋ถํฐ ์ฌ์ฉ๋ ๊ธฐ๋ฅ์ผ๋ก ๋ํ์ ์ธ ์๋ก๋ System.out.printf() ๋ฉ์๋๊ฐ ๊ฐ๋ณ์ธ์๋ฅผ ์ฌ์ฉํ ๋ฉ์๋์ด๋ค.
๊ฐ๋ณ ์ธ์๋ ๋ฉ์๋์ ์ค์ง ํ๋๋ง ์ ์ธํ ์ ์๊ณ , ๊ฐ๋ณ ์ธ์๋ ๋ฉ์๋์ ๊ฐ์ฅ ๋ง์ง๋ง ๋งค๊ฐ๋ณ์๊ฐ ๋์ด์ผ ํ๋ค.
public void printNumers(int... numbers, String... names) ๋ญ ์ด๋ฐ์์ผ๋ก ์ ์ธ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
public class VarargsSamples
{
// ๊ฐ๋ณ ์ธ์๋ ์ค์ง ํ๋๋ง ์ ์ธํด์ผ ํ๋ค. (์ฌ์ฉํ๋ค๋ฉด ๋ง์ง๋ง์ ์ ์ธํด์ผํจ)
public void printNumbers(int... numbers)
{
System.out.println(numbers.getClass().getCanonicalName()); // numbers๊ฐ ์ด๋ค ํ์
์ผ๊ฑด์ง
System.out.println(numbers.getClass().getComponentType()); // ๋ฐฐ์ด์ด ์ด๋ค ํ์
์ ๊ฐ์ง๋์ง
Arrays.stream(numbers).forEach(System.out::println); // ๊ฐ๋ณ ์ธ์๊ฐ ๊ฐ์ง๋ ๊ฐ ์ถ๋ ฅ
}
public static void main(String[] args)
{
VarargsSamples varargsSamples = new VarargsSamples();
varargsSamples.printNumbers(5, 10);
}
}
์คํํ๋ฉด ์ด๋ ๊ฒ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ฐ getCanonicalName() ์ด๋ numbers๊ฐ ์ด๋ค ํ์ ์ธ์ง์ ๋ํด์ ๋ํ๋ด๊ณ , getComponentType()์ ๋ฐฐ์ด์์ ํ์ ์ด ๋ญ์ง๋ฅผ ๋ํ๋ธ๋ค.