Java中的內部類(回調)


一、內部類的主要作用如下:

1. 內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類

2. 內部類的方法可以直接訪問外部類的所有數據,包括私有的數據

3. 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便。

二、內部類可分為以下幾種:

  • 成員內部類
  • 靜態內部類
  • 方法內部類
  • 匿名內部類。

三、1,定義了成員內部類后,必須使用外部類對象來創建內部類對象,而不能直接去 new 一個內部類對象,即:內部類 對象名 = 外部類對象.new 內部類( );

      2,外部類是不能直接使用內部類的成員和方法滴,可先創建內部類的對象,然后通過內部類的對象來訪問其成員變量和方法。

      3,可先創建內部類的對象,然后通過內部類的對象來訪問其成員變量和方法。HelloWorld.this.name

四、Java回調

回調用於層間協作,例如作為一個驅動,是一個底層,他在收到一個數據時,除了完成本層的處理工作外,還將進行回調,將這個數據交給上層應用層來做進一步處理,這在分層的數據通信中很普遍。
其實回調和API非常接近,他們的共性都是跨層調用的函數。但區別是API是低層提供給高層的調用,一般這個函數對高層都是已知的;而回調正好相反,他是高層提供給底層的調用,對於低層他是未知的,必須由高層進行安裝,這個安裝函數其實就是一個低層提供的API,安裝后低層不知道這個回調的名字,但它通過一個函數指針來保存這個回調,在需要調用時,只需引用這個函數指針和相關的參數指針。
其實:回調就是該函數寫在高層,低層通過一個函數指針保存這個函數,在某個事件的觸發下,低層通過該函數指針調用高層那個函數。

關於回調的總結:
在Java中,通常就是編寫另外一個類或類庫的人規定一個接口,然后你來實現這個接口,然后把這個接口的一個對象作為參數傳給別人的程序,別人的程序必要時就會通過那個接口來調用你編寫的函數。

下面這個程序會很好的表示回調執行的過程:

public interface CallBack {   
     //執行回調操作的方法   
     void execute();   
 }
 1 public class Tools {   
 2        
 3     /**  
 4      * 測試函數使用時間,通過定義CallBack接口的execute方法  
 5      * @param callBack  
 6 */   
 7     public void testTime(CallBack callBack) {   
 8         long begin = System.currentTimeMillis();//測試起始時間   
 9         callBack.execute();//進行回調操作 
10         long end = System.currentTimeMillis();//測試結束時間   
11         System.out.println("[use time]:" + (end - begin));//打印使用時間   
12     }   
13        
14     public static void main(String[] args) {   
15         Tools tool = new Tools();   
16         tool.testTime(new CallBack(){   
17             //定義execute方法   
18             public void execute(){   
19                 //這里可以加放一個或多個要測試運行時間的方法   
20                 TestObject.testMethod();
21             }   
22         });   
23     }   
24        
25 }

匿名內部類最常用的情況就是在回調當中的精彩表現。 回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口.

 








免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM