자바 유형 비교
5716 단어 javaprogrammingtutorial
Original post: Flashreads Blog - Type Comparison
주어진 객체가 주어진 클래스, 슈퍼클래스 또는 인터페이스의 인스턴스인지 확인하는 가장 일반적인 방법은 이진 연산자
instanceof
를 사용하는 것입니다. 여기에는 암시적 null 검사가 포함되며 형식이 관련되지 않은 경우 컴파일 타임 오류가 생성됩니다. 그러나 프리미티브를 허용하지 않으며 컴파일 타임에 유형을 알아야 합니다.런타임에 동적으로 확인하려는 경우
boolean isInstance(Object obj)
에서 동등한 방법Class
을 사용합니다. 또한 null 검사를 포함하지만 프리미티브를 허용합니다. a instanceof B
// returns false for null
null instanceof B
a.getClass().isInstance(b);
// commonly used for generics
Class<T> type = b.getClass();
type.isInstance(a);
// Note that the parameter is autoboxed to type Integer
int x = 4;
Integer.class.isInstance(x);
두 가지 유형의 호환성 확인
하위 유형 관계를 확인해야 하는 경우
boolean isAssignableFrom(Class<?> cls)
의 Class
방법을 사용하십시오. NullPointerException이 발생할 수 있습니다. // is it possible to B b = new A()
Class<?> aClass = CharSequence.class;
Class<?> bClass = String.class;
bClass.isAssignableFrom(aClass());
// works for arrays
CharSequence[].class.isAssignableFrom(String[].class); // true
Integer[].class.isAssignableFrom(String[].class); //false
패턴 매칭(자바 14)
if(a instanceof B b) {
// b is casted
b.toString();
}
특수 유형
// Enums
enum Color { WHITE, GRAY, BLACK }
Color.class.isEnum(); // Enum.class.isAssignableFrom(Color.class);
Color.WHITE instanceof Enum; // true
// Arrays
String[].class.isArray();
// get the type of the variables in an array (null if obj is not an array)
Class<?> componentType = obj.getComponentType();
// Primitives
int.class.isPrimitive();
Reference
이 문제에 관하여(자바 유형 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/grilled_pasta/java-type-comparison-37fo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)