instanceof 키워드와 isInstance() 메소드는 모두 객체의 클래스를 확인하는데 사용되는데, 둘의 차이점은 무엇인가요? 다음 글은 instanceof 키워드와 isInstance() 메소드의 차이점을 이해하는 데 도움이 될 것입니다.
instanceof 키워드와 isInstance() 메서드는 모두 객체의 클래스를 확인하는 데 사용되며 둘 다 부울 값을 반환합니다. 그러나 가장 큰 차이점은 객체의 클래스를 동적으로 확인하려는 경우에 발생합니다. 이 경우 isInstance() 메서드가 작동하며 이는 instanceof 연산자를 통해 달성할 수 없습니다.
instanceof 키워드와 isInstance() 메소드의 차이점을 예제를 통해 자세히 살펴보겠습니다.
instanceof 키워드를 사용하여 객체의 클래스를 확인하세요.
public class Test { public static void main(String[] args) { Integer i = new Integer(5); // 当i是Integer类的实例时,输出true System.out.println(i instanceof Integer); } }
출력:
true
이제 런타임에 객체의 클래스를 확인하려면 isInstance() 메서드를 사용해야 합니다.
public class Test { // 此方法告诉我们对象是否是以字符串“c”形式传递名称的类实例。 public static boolean fun(Object obj, String c) throws ClassNotFoundException { return Class.forName(c).isInstance(obj); } public static void main(String[] args) throws ClassNotFoundException { Integer i = new Integer(5); // 当i是Integer类的实例时,输出true boolean b = fun(i, "java.lang.Integer"); // 因为i不是String类的实例,所以输出false boolean b1 = fun(i, "java.lang.String"); //当integer类扩展number类时,如果我也是number类的实例,则输出true。 boolean b2 = fun(i, "java.lang.Number"); System.out.println(b); System.out.println(b1); System.out.println(b2); } }
출력:
true false true
참고: 인스턴스화되지 않은 다른 클래스를 사용하여 객체를 확인하면 인스턴스화 키워드에서 컴파일 시간 오류(호환되지 않는 조건 피연산자 유형)가 발생합니다.
public class Test { public static void main(String[] args) { Integer i = new Integer(5); //报错,因为类型不兼容:Integer不能转换为String System.out.println(i instanceof String); } }
출력:
demo.java:10: error: incompatible types: Integer cannot be converted to String System.out.println(i instanceof String); ^ 1 error
추천 관련 비디오 튜토리얼: "Java Tutorial"
위 내용은 이 기사의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !
위 내용은 Java에서 instanceof 키워드와 isInstance() 메소드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!