[자바/안드로이드] is a raw type. References to generic type Vector<E> should be parameterized

Posted by 앱해피
2015. 6. 23. 11:57 자바(JAVA)

 

is a raw type. References to generic type Vector<E> should be parameterized

 

 

 

위의 코드는 정상적으로 동작을 한다.

 

하지만, Vector 클래스와 관련해서 경고 메시지가 나온 것을 확인할 수 있다.

 


 

 

 

이 경고 메시지가 의미하는 것은, 벡터(Vector)에서 사용할 객체 타입이 정해지지 않았다는 뜻이다.

 

위에 있는 코드를 보면 벡터에서 사용할 객체의 타입이 정해지지 않았기 때문에 Integer 타입의 객체,

 

Character 타입의 객체, Double 타입의 객체 그리고 String 타입의 객체를 Vector에 담을 수 있었다.

 

하지만, 여러 종류의 객체를 담았기 때문에 벡터에서 데이터를 추출할 때, 객체에 존재했던 데이터의

 

타입을 일일이 확인해서 그에 따라 형변환을 해야 한다는 불편함이 있었다.

 

이처럼 프로그래밍을 하는 것은 안전하지 못한 방식이다.

 

만약, 벡터에 저장될 데이터의 종류가 모두 동일하다면, 벡터를 생성할 때, 사용하고자

 

하는 객체의 종류를 명시해야만 위와 같은 경고 메시지가 출력되지 않는다.

 


 

 

 

 

생성된 벡터가 String을 타입의 객체를 저장할 목적으로 생성되었기 때문에

 

Vector<String> v = new Vector<String>(); 와 같이 <String> 료형을 같이 선언했다.

 

벡터에서 사용할 객체를 지정했기 때문에 위에서 발생한 경고 메시지는 발생되지 않는다.

 

데이터를 저장하고 나중에 벡터에서 저장된 데이터를 확인할 때, 현재 벡터에 저장된

 

객체의 타입을 이미 알고 있기 때문에 별도로 타입을 확인하는 절차를 거치지 않아도 된다.

 

이처럼 프로그래밍을 하는 것은 안정성 높은 프로그램을 만드는 방식이다.

 


 

결론

 

is a raw type. References to generic type Vector<E> should be parameterized

 

문제가 신경 쓰인다면 Vector 또는 ArrayList를 생성할 때, 반드시 자료형(타입)을 정하자

 

ex) ArrayList<String> list = new ArrayList<String>();

ex) ArrayList<Student> list = new ArrayList<Student>();

ex) ArrayList<Integer> list = new ArrayList<Integer>();

 

감사합니다 ^_^