外掛開發遇到的坑------final 型變數,編譯過程被優化
android 外掛開發遇到的坑
今天遇到一個坑,pdf 外掛,呼叫了主工程的一個靜態final 字串,但是主工程裡面已經沒有這個字串了,卻沒有崩潰。
後來同事說,因為字串可能已經直接被寫死了。你應該看下編譯後的程式碼。我一同事,反編譯apk 之後,發現,果然,因為provide 的jar 裡面是有這個final 的字串的,java 編譯的時候,直接用死的值替換掉了。這樣,根本就沒有去呼叫主工程的那個變數。
總結:
1.provide 的 jar,不一定完全沒有作用。final的變數,編譯器直接寫死了。
2.看java 程式碼解決不了問題,那就看編譯之後的程式碼,你就知道為什麼了。
3.機器永遠不會做錯,只能是你理解錯了。
自己對java 編譯還是不夠理解。自己對java 還有很多其他的東西,根本不懂。比如編譯過程。等。
相關推薦
外掛開發遇到的坑------final 型變數,編譯過程被優化
android 外掛開發遇到的坑 今天遇到一個坑,pdf 外掛,呼叫了主工程的一個靜態final 字串,但是主工程裡面已經沒有這個字串了,卻沒有崩潰。 後來同事說,因為字串可能已經直接被寫死了。你應該看下編譯後的程式碼。我一同事,反編譯apk 之後,發現,果然,
final修飾引用型變數,變數所指物件的屬性是否能改變!!
請在下面的程式中找出錯誤的位置!!! package com.bdqn.cc.polymorphic; public cl
記事本:如何將16進位制數賦給int型變數,再按16進位制輸出,以及電腦大小端對齊方式測試。
c和c++版本: int i=0x12345678; printf("%hx",i); java版本:
vue無縫滾動的外掛開發填坑分享
寫外掛的初衷 1.專案經常需要無縫滾動效果,當時寫jq的時候用用msClass這個老外掛,相對不上很好用。 2.後來轉向vue在vue-awesome沒有找到好的無縫滾動外掛,除了配置swiper可以實現但是相對來說太重了,於是自己造了個輪子。 3.在這分享下,當時寫這個外掛的坑,自己也複習下,如
區域性內部類為什麼只能訪問final區域性變數,對於成員變數卻可以隨便訪問?
區域性內部類為什麼只能訪問final區域性變數,對於成員變數卻可以隨便訪問? http://kingquake21.iteye.com/blog/1033436 部落格分類: Java innerclas
微信開發遇坑事件---未來元素點選事件
相信不少人在微信裡開發過網頁,在非a/button標籤時,頁面沒重新整理生成的新元素我們一般都用$(document).unbind('click',".preview_imag").on('click',".preview_imag",function(){
Harmony OS 開發避坑指南——原始碼下載和編譯
# Harmony OS 開發避坑指南——原始碼下載和編譯 本文介紹瞭如何下載鴻蒙系統原始碼,如何一次性配置可以編譯三個目標平臺(`Hi3516`,`Hi3518`和`Hi3861`)的編譯環境,以及如何將原始碼編譯為三個目標平臺的二進位制檔案。 **坑點總結**: 1. 下載原始碼基本上沒有太多坑,可
正確生成浮點型的方法,解決sqlachemy Float浮點型的坑,生成float類型時,長度和精度均為0,導致查詢不到結果!
依然 tab 圖片 control 選擇 分享 ice mod ble 問題描述 在使用flask_sqlachemy時,給price字段選擇了Float類型,數據庫用的mysql,生成數據庫表後,發現 from sqlalchemy import Float
建立第一個Fabric創世快,遇坑Failed to generate orderer genesis block
按上篇步驟到了建立創世區塊了,然後失敗了,報錯如下 /Users/yiyunyue/fabric/demo1/fabric-samples/first-network/../bin/configtxgen ###########################################
大資料之scala(四) --- 模式匹配,變數宣告模式,樣例類,偏函式,泛型,型變,逆變,隱式轉換,隱式引數
一、模式匹配:當滿足case條件,就終止 ---------------------------------------------------------- 1.更好的switch var x = '9'; x match{ case
C語言那年踩過的坑--區域性變數,靜態變數,全域性變數在記憶體中存放的位置
先看幾個概念: 1、bss是英文block started by symbol的簡稱,通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域,在程式載入時由核心清0。bss段屬於靜態記憶體分配。它的初始值也是由使用者自己定義的連線定位檔案所確定,使用者應該將它定義在可讀寫的ram區內,源程式中使用m
iOS 開發之 內購遇坑 續篇
之前弄過一個內購買專案,然後總結了一些心得,最近又弄內購的過程中有發現了一些新問題, 就當時對之前的文章做個續篇吧. 之前的內購心得連結: http://blog.csdn.net/jesse0308/article/details/78458823 最近弄的內購專案是提供給接入方的
Ruby 開發環境安裝linux、mac,遇到的錯誤總結(使後人避免入坑)
一、linux安裝ruby時遇到的錯誤 首先講一下為什麼不寫Windows的,個人建議,最好不要用Windows環境,問題很多,需要安裝的東西更多,而且未知的錯誤多,網上不一定查的到,我也安裝過Windows的,也成功過,但是,有時執行會報錯,後來放棄了,安了個Linux的,再後來用了mac系統,
新生入學需要儲存學生資料,現在定義整型變數存放年齡,學號,定義字元變數存放性別,定義浮點型變數存放學分數
順序結構及其流程 void main() /*main 函式,程式的入口*/ {
java--建立一個Test類,包含有一個public許可權的int型成員變數與一個char型別的成員變數,觀察在main方法中的初始值。
//建立一個Test類 class Test1{ //包含有一個public許可權的int型成員變數與一個char型別的成員變數 public int a; public char c; } //主類 public class Test{ //主函式 publ
eclipse外掛開發(匯出外掛,安裝外掛)
僅工作中使用到,現查現用,理解不到位,請持懷疑態度檢視本文。如有問題請聯絡郵件:[email protected]; 以便交流。 匯出外掛 參考文章:http://www.th7.cn/Program/java/201308/147987.shtml 文章講
給定兩個整型變數的值,將兩個值的內容進行交換
#include <stdio.h> #include<stdlib.h> void main() { int num; int a = 10; int b = 20; num = a; a = b; b = num; printf("a=%d\n", a);
對於long和double型變數的特殊規則及原子性,可見性和有序性
Java記憶體模型要求lock,unlock,read,load,assign,use,store,write這8個操作都具有原子性,但對於64位的資料型別(long或double),在模型中定義了 一條相對寬鬆的規定,允許虛擬機器將沒有被volatile修飾的64位資料的讀
給定兩個整型變數的值,將兩個值得內容進行交換。
1.利用新的變數進行替換,程式碼如下: int main() { int a = 10; int b = 90; int tmp = 0; tmp = a; a = b; b = tmp; printf("%d %d", a, b);
扒一扒使用boostrap-fileinput上傳外掛遇到的坑,Bootstrap-fileinput上傳外掛的使用詳解
轉自 https://blog.csdn.net/zlb_lover/article/details/76548772 由於公司專案的需求,需要實現動植物名錄的新增,包括姓名等資訊和圖片等,需要使用bootstrap-fileinput的上傳外掛,在提交新增介面