Java에 Object가 있습니다. 객체가 String, HashMap 또는 HashMap []의 인스턴스인지 여부를 확인하는 방법이 있습니까?Object가 String, HashMap 또는 HashMap []의 인스턴스인지 확인합니다.
위와 같이하면 직관력이 떨어지는 것처럼 보이므로 각 객체에 캐스팅하고 실제로 캐스팅 된 객체의 유형을 확인하기 위해 새로 캐스팅 된 객체에 대한 테스트 방법이 있습니까? 캐스팅?
Java에 Object가 있습니다. 객체가 String, HashMap 또는 HashMap []의 인스턴스인지 여부를 확인하는 방법이 있습니까?Object가 String, HashMap 또는 HashMap []의 인스턴스인지 확인합니다.
위와 같이하면 직관력이 떨어지는 것처럼 보이므로 각 객체에 캐스팅하고 실제로 캐스팅 된 객체의 유형을 확인하기 위해 새로 캐스팅 된 객체에 대한 테스트 방법이 있습니까? 캐스팅?
예 : 그런데
if(obj instanceof String)
{
String str = (String) obj;
.
.
.
}
, 이에 대해 명확히하기 :
[중 & hellip] 새로 주조 된 개체에 대한 테스트 뭔가를 볼 경우 개체의 사실 종류에 그것은 주조 되었는가?
에 잘못된 유형을 입력 할 수 없습니다. obj
유형이 String
인 경우 ((Integer)obj)
은 실행시에 ClassCastException
가 발생하도록합니다.
주목할 점은 obj가 null 일 때'instanceof'가 false를 반환한다는 점입니다 –
그래서 만약 내가 out.println() 객체와 나는 "[Ljava.lang.Object; @ 4296e599"이 무엇을 의미합니까? Map 또는 HashMap이라고 생각했지만 인스턴스를 테스트 할 때 false가 표시됩니다. –
즉,'Object []'타입을 가지고 있음을 의미합니다. 'System.out.println (java.util.Arrays.toString ((Object []) ____))''('____'은 변수 이름)을 사용하여 배열 요소를 출력 할 수 있습니다. – ruakh
instanceof
연산자를 찾고 있습니다.
instanceof 연산자는 개체를 지정된 형식과 비교합니다. 을 사용하여 객체가 클래스의 인스턴스인지 여부, 서브 클래스의 인스턴스 또는 특정 인터페이스를 구현하는 클래스의 인스턴스인지 여부를 테스트 할 수 있습니다.
예
:false
을 반환
true
new Integer(5) instanceof String
동안
"Hello" instanceof String
을 반환합니다.
instanceof
을 사용해야하는 경우 디자인에 문제가있을 수 있습니다. String, HashMap 또는 HashMap 배열이 있는지 확인하고 있습니까? 어디에서 추상화와 정보 숨김이 있습니까?
Java의 은 객체 지향 언어입니다. 네가 해결하려는 문제가 뭔지 모르지만 네가 잃어버린 것처럼 들린다. 이보다 더 나은 추상화를 생각해야합니다.
도와 드릴까요? 이 질문은 http://stackoverflow.com/questions/9337536/iterate-recursively-through-deep-hashmap/9337639#9337639를 참조한 것입니다. –
대신에'instanceof'를 사용하는 대신 여러분은 항상 추정 된 객체 유형으로 캐스팅하고'ClassCastException'을 수신 할 수 있습니다. –
@HotLicks : True. 하나의 작은 차이점은'obj'가'null' 인 경우'(obj instanceof ____)'는'false'가되지만'((__) obj)'는 예외를 발생시키지 않는다는 것입니다. – ruakh
@ruakh - 수정하십시오. (그리고 난 단지 'instanceof' 대 잡는 예외의 사용을 옹호하지 않았다, 그것은 너무 일할 것이라고 지적했다.) –