Item 27. Unchecked Warning
๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ผ.
์ ๋ค๋ฆญ์ ์ฌ์ฉํ๊ฒ๋๋ฉด ClassCastException
์ด ๋ฐ์ํ ์ ์๋๋ฐ, ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ปดํ์ผ๋ฌ๊ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์์ํจ๋ค.
์ด ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์ํ๊ฒ๋๋ฉด ๋น์ฐํ๊ฒ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ต๋ํ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข๋ค.
@SuppressWarnings
๊ฒฝ๊ณ ๋ฅผ ์ต๋ํ ์ ๊ฑฐํ๋๋ผ๋ ์๋ฒฝํ๊ฒ ์ ๊ฑฐํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋ง์ฝ ํ์
์์ ์ด ํ์ ํ๋ค๋ฉด ์ด ๊ฒฝ๊ณ ๋ฅผ ์จ๊ฒจ์ค ์ ์๋ @SuppressWarnings
์ ๋ํ
์ด์
์ ์ฌ์ฉํ๋ฉด ๋๋ค.
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
// ...
@SuppressWarnings("unchecked")
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
// ...
}
์ ์ฝ๋๋ ์ค์ Java 17์ ArrayList
์ฝ๋๋ก, ์ฃผ์ ๋ถ๋ถ์์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ์ง๋ง @SuppressWarnings
์ ๋ํ
์ด์
์ ๋ฉ์๋์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์จ๊ฒจ์ฃผ๊ฒ ๋๋ค.
์ ๋ํ
์ด์
์ ์ธ์ ๊ฐ๋ณ ์ง์ญ๋ณ์ ์ ์ธ๋ถํฐ ํด๋์ค ์ ์ฒด๊น์ง ๊ฐ๋ฅํ์ง๋ง, ๊ฐ๋ฅํ ํ ์ข์ ๋ฒ์์ ์ ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์ ์ฝ๋์ ๋ ์ข์ ๋ฒ์์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
// ...
public <T> T[] toArray(T[] a) {
if (a.length < size) {
// ์ ์ธ๋ถ์๋ง ์ ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ง์ญ๋ณ์ ์ ์ธ ํ ์ ๋ํ
์ด์
์ ์ฌ์ฉ
@SuppressWarnings("unchecked")
T[] result = (T[]) Arrays.copyOf(elementData, size, a.getClass());
return result;
}
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
// ...
}
๊ฒฐ๋ก
๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ ์ค์ํ๋ ๋ฌด์ํ์ง ๋ง๊ณ , ๋ง์ฝ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ ์ ์๋ค๋ฉด @SuppressWarnings
์ ๋ํ
์ด์
์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์จ๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
๋ํ ์์ ํ ์ด์ ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ฃผ๊ธฐ ์ํด ํญ์ ์ฃผ์์ ํตํด ์๋ ค์ฃผ๋ ๊ฒ์ด ์ข๋ค.
Last updated
Was this helpful?