Object와 Object[]는 엄연히 다른 타입이다.
그러므로 Method overoading 이 가능하다.
public void test(Object t);
public void test(Object[] t);
각각 제대로 동작한다.
그런데 아래와 같은 경우도 제대로 동작한다.
Object t1 = new Object();
Object t2 = new Object();
Object test1 = new Object[]{t1, t2};
또한 아래와 같은 경우도 제대로 동작한다.
Map<String, Object>map = new HashMap<String, Object>();
map.put("test", request.getParameterValues("test"));
그러나 캐스팅은 불가하다.
아래는 Object를 Object[]로 형변환을 시도해 봤다.
Object test1 = new Object();
Object[] test2 = (Object[])test1; // 에러 (반대로 해봐도 에러!)
Object 라는것은 java의 최상위 Class라는 개념과..
모든 Class는 배열 형태로 존재할수 있다라는 개념사이의 짬뽕으로 인한 오류인것 같다.
그래서 String으로 테스트한 결과 역시 안되는 것을 확인했다.
Map<String, String> map = new HashMap<String, String>();
map.put("test", new String[]{"t1", "t2"}); // 에러
그렇다면 Object와 Object[]를 어떻게 구분할 수 있을까?
똑똑한 Sun은 이미 구분하는 모듈을 만들어 놓았다.
test.getClass().isArray() 로 구분하면 된다.
이 외의 방법은 아무리 생각해도 답이 없었다.
'Java' 카테고리의 다른 글
goo.gl api java 구현 (0) | 2016.10.06 |
---|---|
bit.ly api java 구현 (0) | 2016.10.06 |
base64, DES chiper - encode, decode 구현 (6) | 2011.10.11 |
jdbc로 procedure call sample (2) | 2011.08.05 |
이종 db간 데이터 처리를 위한 프로젝트 (1) | 2011.04.04 |