為什么源碼中很多方法就一行throw new RuntimeException("Stub!")


   在使用某些類的方法時,發現其內部就一行throw new RuntimeException("Stub!"),但是實際運行中並沒有拋出該錯誤,該方法也並沒有語法報錯。

       因此可能是系統設計者故意隱藏此部分的實現源碼。

 

  1. 使用的Android Studio或者其他IDE看jar包的源碼的時候,編譯工具只讓你看到方法簽名,不讓你看方法的實現;
  2. Android SDK自帶的Source源碼包很小,並沒有包括所有的Android Framework的源碼,僅僅提供給應用開發參考用,一些比較少用的系統類的源碼並沒有給出,所以有時候你會看到throw new RuntimeException("Stub!")。
  3. 此外,在IDE里看源碼的時候,有時候一些方法或者類會出現報紅(找不到)的情況:這是因為這些方法或者類是被Android SDK隱藏的,出於安全或者某些原因,這些API不能暴露給應用層的開發者,所以編譯完成的android.jar包里會把這些API隱藏掉,而我們的Android項目是依賴android.jar的,查看源碼的時候,IDE會自動去android.jar找對應的API,自然會找不到。當然,這些API在ROM中是實際存在的,有些開發者發現了一些可以修改系統行為的隱藏API,在應用層通過反射的方式強行調用這些API執行系統功能,這種手段也是一種HACK。


免責聲明!

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



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