2012-03-08 4 views
2

내가 즉 그의 instanceof를하는 경우 클래스 객체 또는 클래스 이름과 시험을 통과 할이(C의 객체 instanceof) C의 유형은 무엇입니까? 난

public void method(Object obj, Class objClass) { 
    if(obj instanceof objClass) { 
     //do something 
    } 
} 

처럼 뭔가를하려고합니다. 이 작업을 수행 할 수 없습니다,이 방법을 아는 사람? 감사합니다.

+0

또는 http://stackoverflow.com/questions/376988/is-there-any-way-other-than-instanceof-operator-for-object-type-comparison-in-ja – skaffman

답변

6

isInstance 방법을 Class으로 사용할 수 있습니다.

지정한 Object가이 클래스가 나타내는 개체와 할당 호환되는지 여부를 확인합니다. 이 메서드는 Java 언어 instanceof 연산자과 동적으로 동일합니다. 지정된 Object 인수가 null가 아니고 ClassCastException을 발생시키지 않고이 Class 객체가 나타내는 참조 유형으로 캐스팅 할 수있는 경우이 메소드는 true를 리턴합니다. 그렇지 않으면 false를 리턴합니다. 당신은 일반적으로이 작업을 수행하려면

그래서 당신은 당신이 objClass로 표현 형태로 변환 .cast를 사용할 수

if (objClass.isInstance(obj)) ... 

를 작성합니다.

public <T> void method(Object obj, Class<T> objClass) { 
    if(objClass.isInstance(obj)) { 
    T t = objClass.cast(obj); 
    //do something with t instead of obj 
    } 
} 
+0

감사, 경우 (objClass.isInstance (obj))가 작동합니다. – Mustafa