자바 에서 리 턴 함수 상세 설명

12187 단어 #Java
자바 의 중 반전 함수 상세 설명
0. 머리말
솔직히 말씀 드 리 지만 인터넷 블 로 그 는 대부분 표절 입 니 다.참고 가치 도 높 지 않 습 니 다.그래서 박문 을 쓸 생각 이 들 었 다.
1. 배경
인터넷 에 있 는 블 로 그 를 보 니 예 를 잘 들 었 다. 전화 하 는 것 도 너무 상투 적 이 잖 아.여기 서 나 는 이 블 로그 의 예 를 들 어 내 가 이해 하 는 반전 함 수 를 상세 하 게 소개 할 것 이다.
2. 정의
여기 서 제 가 생각 하 는 정확 한 정 의 를 말씀 드 리 겠 습 니 다.실현 과정 은 다음 과 같다.
  • 인 터 페 이 스 를 정의 합 니 다 CallBack [이 인 터 페 이 스 를 정의 하 는 목적 은 추상 에 있 습 니 다]
  • Class A 구현 인터페이스 CallBack
  • Class A 에는 클래스 B 의 인용 b
  • 가 포함 되 어 있 습 니 다.
  • Class B 에는 CallBack 클래스 대상 callback 이 들 어 가 는 방법 이 있 습 니 다.예 를 들 어 f (CallBack callBack, String...) 와 같이 전체 과정의 호출 관 계 는 b. f = > · · = > callBack. method = > a. method [b. f 에서 callBack 의 method 방법 을 호출 하기 전에 제 가 사용 한 기 호 는 => ··· => 입 니 다. 이것 은 호출 함수 가 한 단계 에 완성 되 지 않 았 을 수도 있 고 중간 에 간접 적 인 다른 함수 호출 이 많 을 수도 있 습 니 다]
  • 3. 수요
    위 챗 충전 요금 은 대부분의 동지 들 이 경험 이 있다 고 믿 습 니 다. 보통 다음 과 같은 몇 가지 절차 가 필요 합 니 다.
  • 01. 먼저 위 챗 클 라 이언 트 가 서버 의 인 터 페 이 스 를 호출 하여 충전 작업 을 한다.
  • 02. 그러나 서버 측 이 완성 해 야 할 내용 이 비교적 많다. 예 를 들 어 은행 이 이 체 를 완성 하고 운영 자가 충전 하 는 등 이다.[동기 화] 서버 에서 이 작업 을 완성 하 기 를 계속 기 다 려 야 한다 면 오 랜 시간 이 필요 합 니 다.하지만 이 보 를 취하 면 문제 가 없 을 것 이다.그래서 이 과정 은 비동기 기법 을 사용한다.
  • 03. 핸드폰 에서 위 챗 충전 을 완료 하면 충전 에 성공 하 는 화면 을 받 을 수 있 지만 실제 충전 은 성공 하지 못 했 습 니 다 [위 챗 비용 납부 성공 만 표 시 됩 니 다].
  • 04. 실제 적 인 성공 [예 를 들 어 10001 이 너 에 게 문 자 를 보 내야 실제 충전 성공 을 나타 낸다] 그러면 이 문자 알림 기능 은 리 셋 으로 실현 할 수 있다.이 과정 에서 자바 가 필요 하 다 면 어떻게 해 야 할 까?

  • 4. 코드
  • CallBack 인터페이스
  • /**
     * 1.CallBack is only an interface. And have a simple method.
     */
    public interface CallBack {
        public void notifyToUser();
    }
    
  • WeChat 류
  • package wechat;
    
    /**
     *
     */
    public class WeChat implements CallBack{
        public String weChatId;//wechat id
        public String name;//     
        public double money;//    
        public Server server = new Server();//    Server   
    
        public WeChat(String name,double money)
        {
            this.name = name;
            this.money = money;
        }
    
        public void pay(){//  
            System.out.println("01.          "+this.name+"     ,      payToTelecom,    :");
            server.payToTelecom(WeChat.this);//   【WeChat         】
            System.out.println("05.            ,payToTelecom()    ");
        }
    
        //  Callback        
        @Override
        public void notifyToUser() {
            System.out.println("04.      ,      100 。" +
                    "         102、   go  (www.189.cn)、 go   。[        ]");
        }
    }
    
  • 서버 클래스
  • package wechat;
    
    public class Server {
        public void payToTelecom(WeChat weChatUser){//       
            System.out.println("02.         :"+weChatUser.name+"  "+weChatUser.money+" ");
            System.out.println("03.     :"+weChatUser.name+" 0.1%    ");
            this.notifyToWeChat(weChatUser);
        }
    
        public void notifyToWeChat(WeChat weChatUser){
            weChatUser.notifyToUser();
        }
    }
    
  • TestMain 클래스
  • package wechat;
    
    public class TestMain {
        public static void main(String[] args) {
            WeChat weChat = new WeChat("LittleLawson", 100);
            weChat.pay();
        }
    }
    

    상기 코드 는 다음 과 같이 링크 할 수 있 습 니 다.https://github.com/LittleLawson/TestCallBack코드 에 AliPay 클래스 를 추 가 했 습 니 다. 인터페이스 CallBack 가 불필요 하지 않 습 니 다.
    4. 분석
    상기 코드 의 호출 과정 은 다음 과 같다. weChatUser. pay () = > server. payToTelecomByWeChat () = > server. notifyToWeChat () = > weChatUser. notifyToUser () 는 처음에 WeChat. pay () 에서 출발 하여 마지막 으로 weChatUser. notifyToUser () 방법 으로 돌아 가 는 것 을 볼 수 있다.
    5. 총화
    리 턴 함수 의 실현 과정 을 생각 하고 있 을 것 입 니 다. 여러분 은 저 와 마찬가지 로 자바 입문 자 입 니 다.여기 서 제 가 몇 가지 문 제 를 던 졌 으 니 여러분 은 생각해 보 세 요.
  • 01. 왜 리 셋 함수 가 필요 합 니까?나 는 호출 함수 의 존 재 는 호출 자 에 게 "내 가 호출 에 성공 / 실 패 했 습 니 다" 라 고 말 하기 위 한 것 이 라 고 생각한다.예 를 들 어 상기 위 챗 충전 예 를 들 어 자신 이 충전 성공 / 실 패 를 모 르 면 위 챗 에 새 가 있어 야 합 니까?[충전 성공 / 실패 의 기준 은 운영 자가 이 돈 을 받 는 것 이지 위 챗 이 받 는 것 이 아니 므 로 서버 와 같은 트리거 리 셋 이 필요 합 니 다. 위 챗 과 같은 트리거 리 셋 이 아 닙 니 다.]
  • 02. 전형 적 인 리 턴 함수 호출 의 사용 사례 는 어떤 것 이 있 습 니까?이것 은 내 가 수집 하고 있 으 니 후기 에 업 데 이 트 될 것 이다.

  • 6. 참고 자료
  • https://blog.csdn.net/xiaanming/article/details/8703708/[좋 은 글]
  • https://www.cnblogs.com/liboBlog/p/7107440.html[본 논문 의 소 재 는 여기 서 기원 되 었 다]
  • https://blog.csdn.net/jiayi_yao / article / details / 51046526 [리 셋 함수 에 대한 이해 가 정확 하고 notifyToUser () 라 는 방법 을 단독 CallBack 인터페이스 로 추상 화해 야 하 는 이 유 를 설명 합 니 다.]
  • https://blog.csdn.net/allen_zhao_2012 / article / details / 8056665 \ # commentsedit [그러나 이 글 에서 이 작가 가 반전 에 대한 이 해 는 잘못된 것 이 라 고 생각 합 니 다]
  • 좋은 웹페이지 즐겨찾기