객체가 Java의 클래스에 존재하는지 확인
이 질문에 이미 답변이 있습니다.
발견가 주어진 클래스에 증명 지 확인할 수있는 방법이 있습니까? 예를 들어, 할 수 있습니다
if(a.getClass() = (new MyClass()).getClass())
{
//do something
}
그러나 이렇게하는 것은 새 객체를 즉시 인스턴스화해야합니다. "a"가 "MyClass"클래스에 존재하는 확인하는 더 좋은 방법이 있습니까?
instanceof
다른 답변에서 설명 된대로 키워드는, 당신이 원하는 것이 일반적이다. 명심 instanceof
돌아갑니다 true
뿐만 아니라 슈퍼 클래스에 대한.
순위가 클래스의 직접 인스턴스인지 확인하는 클래스를 선택할 수 있습니다. 를 통해 인스턴스의 클래스를 얻을 수 있습니다 getClass()
. .NET을 통해 특정 클래스에 정적으로 액세스 할 수 있습니다 ClassName.class
.
예를 들면 다음과 같습니다.
if (a.getClass() == X.class) {
// do something
}
의 예에서 위 a
가의 인스턴스 이면보기 조건이 사실 이고의 하위 클래스 인스턴스 인 X
경우 a
에는 실제 가 아닙니다 X
.
비교 :
if (a instanceof X) {
// do something
}
에서는 instanceof
, 조건은 참 a
의 인스턴스 인 X
경우 또는 a
(A)의 인스턴스이며 서브 클래스 의 X
.
대부분의 경우 instanceof
옳습니다.
이 작업을 동적으로 수행해야하는 경우 다음을 사용할 수 있습니다.
if (clazz.isInstance(a)) {
// do something
}
clazz
의 인스턴스는 어디에 있습니까?Class
instanceof
연산자 사용 :
if(a instanceof MyClass)
{
//do something
}
운영자를 시도하십시오 instanceof
.
instanceof
이미 언급 된 한 사용에 동의합니다 .
사용의 또 다른 이점은와 instanceof
함께 사용할 때이다 null
참조 instanceof
의지 복귀 false
, 동안이 a.getClass()
를 던질 것입니다 NullPointerException
.
일반적인 방법은 다음과 가변합니다.
if (a instanceof A)
그러나 A
일반 인수에서 와 같이이를 수행 할 수없는 경우가 있습니다 .
Java의 유형 삭제로 인해
<A> boolean someMethod(Object a) {
if (a instanceof A)
...
}
다음은 작동하지 unchecked cast
경고 를 생성합니다 .
<A> void someMethod(Object a) {
try {
A casted = (A)a;
} catch (ClassCastException e) {
...
}
}
A
런타임 A
에는 기본적으로 이므로 캐스트 할 수 없습니다 Object
.
경우에, 대한 이러한 해결책 Class
은 또는 일반 인수 대신를 사용하는 을 구석으로입니다.
void someMethod(Object a, Class<A> aClass) {
if (aClass.isInstance(a)) {
A casted = aClass.cast(a);
...
}
}
그런 다음 메서드를 다음과 같이 호출 할 수 있습니다.
someMethod(myInstance, MyClass.class);
someMethod(myInstance, OtherClass.class);
참고 URL : https://stackoverflow.com/questions/4294844/check-if-an-object-belongs-to-a-class-in-java
'ProgramingTip' 카테고리의 다른 글
매개 변수를 ActiveModel Serializer에 전달하는 방법 (0) | 2020.11.22 |
---|---|
Oracle SQL Developer- 그리드가 누락 된 쿼리 결과 창 (0) | 2020.11.22 |
UIImage를 CIImage로 또는 그 변환하는 방법 (0) | 2020.11.22 |
C ++에서 std :: 벡터 확인 (0) | 2020.11.22 |
iOS에서 사용자 지정 UIActivity를 생성해야합니까? (0) | 2020.11.22 |