>  기사  >  Java  >  Java에서 instanceof 키워드와 isInstance() 메소드의 차이점은 무엇입니까?

Java에서 instanceof 키워드와 isInstance() 메소드의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2019-03-20 14:48:133711검색

instanceof 키워드와 isInstance() 메소드는 모두 객체의 클래스를 확인하는데 사용되는데, 둘의 차이점은 무엇인가요? 다음 글은 instanceof 키워드와 isInstance() 메소드의 차이점을 이해하는 데 도움이 될 것입니다.

Java에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.