搜尋

首頁  >  問答  >  主體

java - 參數列表上的註解可以同時有多個嗎?

我有一個方法,在參數列表上有一個參數(接受一個顏色類型),數據類型是int型

但是我的方法內部,這個int型根據傳入的一個boolean類型做了判斷,
所以它

 * 既可以是`@ColorRes` (颜色代码的资源ID,int类型)
 * 也可以是`@ColorInt`  (颜色代码在Color类中的成员变量,int类型)
 

但是方法參數上又不能寫(@ColorRes|@ColorInt) 同樣的參數列表也不能用方法重載來搞定。
所以就想問一下有沒有辦法可以讓兩個注解同時生效的?

PHPzPHPz2899 天前762

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-04-18 10:55:55

    多註解程式碼如下:

    public void setColor(@ColorInt @ColorRes int color){
        // TODO 
    }
    

    這麼寫是有問題的. 對IDE來說, 這是有歧義的, 你又要是Color色值, 又要是Color資源引用, 會有這樣的Int值嗎?
    本身這類註解只是IDE輔助用的, 即編譯時就發現問題, 開啟Inspections可以停用這類Lint, 如下圖:

    為什麼不參考Android源碼的方式來, 而非得定義一個讓調用者抓狂的方法, 源碼如下:

    public void setBackgroundColor(@ColorInt int color) {
        ...
    }
    
    public void setBackgroundResource(@DrawableRes int resid) {
        ...
    }
    

    回覆
    0
  • 取消回覆