자바 는 서로 다른 매개 변수 에 따라 서로 다른 구현 클래스 작업 을 호출 합 니 다.

본 원숭이 가 오늘 회 사 를 도와 세 번 째 결제 인 터 페 이 스 를 쓸 때 영감 이 떠 오 르 면 확장 성 이 비교적 강 한 충전 인 터 페 이 스 를 쓰 고 싶 습 니 다.t 는 서로 다른 충전 경 로 를 선택 하여 서로 다른 충전 실현 류 를 호출 합 니 다.
우선 인 터 페 이 스 를 써 야 합 니 다.

그리고 당신 의 PayService 실현 클래스 EcpssPayService(제3자 인터페이스 실현 클래스)와 ReapalPayService(제3자 인터페이스 실현 클래스)를 적어 서 몇 가지 주의 하 세 요.(주 해 는 반드시 따라 가 야 합 니 다)

자,이제 도구 류 를 쓸 수 있 습 니 다.SpringBeanUtil.

다 쓴 후에(ok 완 공 했 습 니 다)다음 에 Controller 에서 호출 할 수 있 습 니 다.
그럼 Reaplaservice 류 를 사용 하지 않 고 ecpss 로 전 달 됩 니 다.그러면 Ecpss PayService!)를 호출 합 니 다.

마지막 으로 말 하지만 당신 의 실현 클래스 는 스프링 이 스캐너 패 키 지 를 불 러 올 때 스 캔 할 수 있 을 것 입 니 다.그렇지 않 으 면 당신 은 두 앙 입 니 다.만약 에 클래스 가 정의 되 지 않 은 소년 이 폭발한다 면 당신 은 아직 젊다 는 것 을 설명 할 수 있 습 니 다.

component-scan 에서 두 개의 실현 클래스 의 가방 을 스 캔 한 경로 over!!!!
보충 지식:자바 류 에서 서로 다른 인터페이스의 동명 방법 을 실현 할 때 이 방법 은 어느 인터페이스 에 속 합 니까?
이러한 상황 이 존재 한다.한 가지 유형 은 두 개의 인 터 페 이 스 를 실현 했다.이 두 인터페이스 에서 같은 방법(동명 동참)이 있다.그러면 유형 중의 이 실현 방법 은 어느 인터페이스 에 속 하 는가?

public interface InterfaceA {
  void method();
  void methodA();
}

public interface InterfaceB {
  void method();
  void methodB();
}

public class Subject implements InterfaceA, InterfaceB {

  @Override
  public void method() {

  }

  @Override
  public void methodB() {

  }

  @Override
  public void methodA() {

  }
}
Subject 클래스 는 InterfaceA 와 InterfaceB 두 개의 인 터 페 이 스 를 실현 하 는 방법 입 니 다.그 중에서 method 는 InterfaceA 와 InterfaceB 가 공유 하 는 똑 같은 방법 입 니 다.그러면 Subject 클래스 에서 이 루어 진 이 방법 은 어느 인터페이스 에 속 합 니까?
정 답 은 인터페이스 A 이자 인터페이스 B 인 데 무슨 뜻 이에 요?즉,이때 의 Subject 클래스 는 인터페이스 A 로 그 중의 method 방법 을 사용 할 수도 있 고 인터페이스 B 로 그 중의 method 방법 을 사용 할 수도 있다.
자바 가 implements 에 대한 요 구 는 인터페이스 에서 설명 하 는 방법 이 라면 실현 류 에서 반드시 이 를 실현 해 야 한 다 는 것 이다.Subject 류 만 보면 method 와 methodA 두 가지 방법 이 있 기 때문에 InterfaceA 인터페이스의 모든 방법의 실현 류 를 실현 하 는 동시에 가면 에는 method 와 methodB 두 가지 방법 이 있다.그래서 인터페이스 B 인터페이스의 모든 방법 을 실현 하 는 실현 류 이기 도 하 다.
따라서 Subject 클래스 를 사용 할 때 인터페이스 A 라 고 생각하면 인터페이스 A 입 니 다.인터페이스 B 라면 인터페이스 B 입 니 다.
그래서 아래 처럼 사용 할 수 있 습 니 다.전혀 문제 가 없습니다.

public class Main {

  public static void main(String[] args) {
    //         InterfaceA   ,        InterfaceA     
    InterfaceA interfaceA = new Subject();
    interfaceA.method();
    interfaceA.methodA();

    test(interfaceA);

    //         InterfaceB   ,        InterfaceB     
    InterfaceB interfaceB = new Subject();
    interfaceB.method();
    interfaceB.methodB();

    //          
    Subject subject = new Subject();
    subject.myMethod();
    //  InterfaceA 
    interfaceA = subject;
    interfaceA.method();
    interfaceA.methodA();
    //  InterfaceA          InterfaceB 
    interfaceB = subject;
    interfaceB.method();
    interfaceB.methodB();
    //  InterfaceB           InterfaceA 
    interfaceA = (InterfaceA) interfaceB;
    interfaceA.method();
    interfaceA.methodA();
    //...   ...
  }

  private static void test(InterfaceA interfaceA){
    //     InterfaceA       implements InterfaceB
    //           InterfaceB       
    InterfaceB interfaceB = (InterfaceB) interfaceA;
    interfaceB.method();
    interfaceB.methodB();
  }
}
이상 의 이 자바 는 서로 다른 매개 변수 에 따라 서로 다른 실현 류 조작 을 호출 하 는 것 이 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 지지 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기