JAVA arrayList에서요~

hwoney의 이미지

arraylist에 넣었다가
다시 get 하면 모두 object 타입이 되자나요...

그런데 그 전에,서로 타입이 다른
a 클래스타입과 b클래스 타입과 , c클래스 타입을
한 arraylist에 넣어줬는데요.......

나중에 get 해서, 그것이 전에 어떤 오브젝타입이었나
알아내서 if문을 돌릴라 했는데....
잘 안되네요.....;;;

Class cl = array_l.get(i).getClass(); 

if( cl == a.class){ 

}else if(cl == b.class){ 
     
}else if(cl == c.class){ 

} 

이런식으로 하면 안되는 건지요;;
fender의 이미지

if (a instanceof A) {
...
}

를 쓰세요 :)

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

coldmind의 이미지

Object type은 항상 클래스 casting을 해줘야 합니다.

Class a = b.getClass();

했을 때 a 는 그야 말로 클래스 타입에 클래스입니다.

따라서 a.getName()하면 클래스 이름이 리턴 됩니다.

상세한건 중략 하고 클래스 개념을 올바로 잡으시고요...

제가 코드를 드리면

public String parserArrayList(ArrayList list) {
             Object o;
             for(int  i = 0; i < list.size(); i++ ) {
                     o = list.get(i);
                     if( o instanceof String ) {
                            return (String) o;
                     } else if( o instanceof StringBuffer ) {
                            return ((StringBuffer) o).toStirng();
                     } else if( o instanceof myClass) {
                            return ((myClass) o).toStirng();
                     } 
               }
        return "there has no String!";
   }

이 코드가 에러 없이 돌아 갈거라고 믿지 마세요... 에디터로 써본 거 뿐이니까..
암튼 instanceof 를 사용 해서 각 Object로 분리 하고 실제 그 Object
타입으로 쓰려고 할땐 casing해서 사용 하시라는 말씀 입니다.

안녕하십니까....카르페디엠 Carpe Diam