context instanceof Activity 분석 이해

instanceof: 왼쪽 객체가 오른쪽 클래스의 인스턴스인지 여부를 결정하는 Java 의 이진 연산자 입니다. 그렇다면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

예시 1:

String s = "I AM an Object!"; 
boolean isObject = s instanceof Object; 

예: String 객체를 가리키는 String 객체 참조를 선언한 다음, 그것이 가리키는 객체가 Object 클래스의 인스턴스인지 테스트하기 위해 instanceof를 사용합니다. 분명히 이는 사실이므로 true를 반환합니다. isObject의 값이 true입니다.

예 2:

instanceof에는 몇 가지 용도가 있습니다.
예를 들어, 우리는 세 가지 클래스가 있는 청구서 처리 시스템을 작성했습니다.

public class Bill {
    
    //省略细节} 
public class PhoneBill extends Bill {
    
    //省略细节} 
public class GasBill extends Bill {
    
    //省略细节} 

Bill 유형의 개체를 받아들이고 금액을 계산하는 메서드가 핸들러에 있습니다.
두 가지 청구서 계산 방법이 다르고 수신 Bill 개체가 둘 중 하나일 수 있으므로 판단하는 데 인스턴스of가 사용된다고 가정합니다.

public double calculate(Bill bill) {
    
     
  if (bill instanceof PhoneBill) {
    
     
  //计算电话账单 
  } 
  if (bill instanceof GasBill) {
    
     
  //计算燃气账单 
  } 
  ... 
  } 

이렇게 하면 하나의 메서드를 사용하여 두 하위 클래스를 모두 처리할 수 있습니다.
그러나 이러한 접근 방식은 종종 객체 지향 다형성을 활용하지 못한 것으로 간주됩니다.
실제로 위의 기능적 요구 사항은 메소드 오버로딩을 사용하여 완전히 실현될 수 있는데, 이는 구조적 프로그래밍 모드로 돌아가는 것을 피하기 위해 객체 지향 프로그래밍을 수행해야 하는 방식입니다.
이름과 반환 값은 같지만 매개변수 유형이 다른 두 가지 메서드를 제공하세요.

public double calculate(PhoneBill bill) {
    
     
  //计算电话账单 
  } 
  public double calculate(GasBill bill) {
    
     
  //计算燃气账单 
  } 

따라서 대부분의 경우에 인스턴스 오브를 사용하는 것은 권장되지 않으며 다형성을 잘 활용해야 합니다.

instanceof는 일반적으로 객체 유형을 강제하는 데 사용됩니다.
  예를 들면 다음과 같습니다.

 //继承关系 
  class Manager extends Employee {
    
    }

  public void doSomething(Employee e) {
    
     
      if ( e instanceof   Manger){
    
     
        Manager m = (Manager) e ; 
        } 
 } 

예 3:

//判断里面的意思是:context对象是否来自actvity。
if (context instanceof Activity) {
    
      
    Log.i(LOGTAG, "Callback Activity...");  
    Activity callbackActivity = (Activity) context;  
    callbackActivityPackageName = callbackActivity.getPackageName();  
    callbackActivityClassName = callbackActivity.getClass().getName();  
}  

Android의 컨텍스트는 애플리케이션서비스를 나타낼 수도 있습니다 .

Supongo que te gusta

Origin blog.csdn.net/zxz_zxz_zxz/article/details/130974418
Recomendado
Clasificación