배열 강제 전환 이상 현상 (T [] tArr = (T []) new Object [1])

742 단어 자바
왜 가능 합 니까? 가장 큰 이 유 는 자바 의 일반적인 형식 은 지우 기 방안 을 사용 하 는 것 입 니 다. 컴 파일 된 후에 T 는 Object 형식 으로 바 뀌 었 기 때문에 실행 중 에는 ClassCastException 형식 변환 오 류 를 보고 하지 않 습 니 다.
public class Test<T>
{
	public static void main(String[] args)
	{
		//    ClassCastException
		//String[] strArr = (String[]) new Object[1];
		new Test<String>().test(new String("str"));
	}

	private void test(T t)
	{
		//  :          
		T[] tArr = (T[]) new Object[1];
		tArr[0] = t;
		System.out.println(tArr[0]);//str
		
		//       ,          
		//tArr = new T[1];
		
		//       ,       T  
		//tArr[0] = new T();
	}
}

좋은 웹페이지 즐겨찾기