http://okjsp.net/seq/170034#1414547013524
초보질문인지 모르겠습니다만..
List<Car> carList = new List<Car>();
List<Object> objList = (List<Object>) carList;
캐스팅부분에서 List<Car> 를 List<Object>로
형변환 해줄수 없다는 에러가 납니다.
List<Car> 를 List<Object>로 캐스팅할려면 어떻게 해줘야 하는지요..
출처 : http://bryant.tistory.com/25
1. Type Safety
2. Generic은 형변환이 되지않는다. (상속을 인정하지 않는다.)
3. 타입 삭제.
4. wildcard types
1) 모든 타입을 받지만 제한을 둔다.
- <? extends Number> : Number형 이하를 받는다.
- <? super Numbr> : Number형 이상을 받는다.
5. Generic Methods : 리턴 타입 앞에 generic형을 쓴다.
1) 만능형 메소드를 사용하기위해 선언한다.
objList.add((Object)carList.get(i))가 답이겠죠.
애초에 generic type라는게 무의식적으로 되는 자동형변환을 명시적으로 지정해두어 막는 용도이니까요. 명시적으로 형변환을 해서 넣으시면 됩니다.
List<Car> a = new ArrayList<Car>();
List<? extends Object> b = a;
List<Object> c = (List<Object>) b;
이런 과정을 거치면 일단 컴파일 오류는 나지 않는듯.. 하지만 실행은 안해봤음.. ^^
아.. 그리고 . List는 interface이기 때문에 new로 객체를 생성할 수 없습니다.
List의 구현체중 하나(ArrayList, LinkedList 등... )를 사용하셔야...
흠.. 글쿤요
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class A
{
@Test
public void testB() throws Exception
{
List<B> list = new ArrayList<A.B>();
for (int i = 0; i <= 10; i++)
{
B b = new B();
b.setB(""+i);
list.add(b);
}
System.out.println(list);
List<? extends Object> b = list;
List<Object> c = (List<Object>) b;
System.out.println(b + "\t" + b.size());
System.out.println(c + "\t" + c.size());
}
static class B
{
String b;
public void setB(String b) {
this.b = b;
}
public String getB() {
return b;
}
@Override
public String toString()
{
return b;
}
}
}
'차근차근 > JAVA JSP' 카테고리의 다른 글
syntax error insert assignmentoperator expression to complete expression (0) | 2014.10.29 |
---|---|
Java에서 Warning 해결 방법들 (0) | 2014.10.29 |
Spring Controller에서 뷰(JSP) 페이지로 값 넘기기 (0) | 2014.10.28 |
스프링 프레임 워크 구조 ( Spring framework 구조 ) (0) | 2014.10.28 |
java에서 jsp로 jsp에서 java로 데이터 전송 (0) | 2014.10.28 |