我在項目目錄下的編譯生成的文件夾裏發現 了一些狀況。java
在/butterknife-sample/app/build/intermediates/classes/debug/com/example/butterknife這個目錄裏面,基本app
上都是class文件,ui
可是我發現了2個Java文件(是的,是java文件,居然是java文件,不是說java文件編譯事後是class文件,怎麼會有class文件呢?)
this
SimpleActivity$$ViewInjector.java
spa
SimpleAdapter$ViewHolder$$ViewInjector.java
debug
聯想到Android項目能夠自動生成R.java文件,因此咱們有理由相信這寫java文件是因爲編譯自動生成的。事件
findviewByid這些代碼是自動生成的,不是程序在運行的時候,查找註解,而後動態執行findViewById操做,同理OnClick這些事件it
的綁定也是同樣。編譯
因此咱們有理由相信在oncreate中執行了ButterKnife.inject(this);那麼會再主動調用class
SimpleActivity$$ViewInjecort.inject();
這個方法。