84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我有一个方法,在参数列表上有一个参数(接受一个颜色类型),数据类型是int型
但是我的方法内部,这个int型根据传入的一个boolean类型做了判断,所以它
* 既可以是`@ColorRes` (颜色代码的资源ID,int类型) * 也可以是`@ColorInt` (颜色代码在Color类中的成员变量,int类型)
但是方法参数上又不能写(@ColorRes|@ColorInt) 同样的参数列表也不能用方法重载来搞定。所以就想问一下有没有办法可以让两个注解同时生效的?
(@ColorRes|@ColorInt)
学习是最好的投资!
多註解程式碼如下:
public void setColor(@ColorInt @ColorRes int color){ // TODO }
這麼寫是有問題的. 對IDE來說, 這是有歧義的, 你又要是Color色值, 又要是Color資源引用, 會有這樣的Int值嗎?本身這類註解只是IDE輔助用的, 即編譯時就發現問題, 開啟Inspections可以停用這類Lint, 如下圖:
Inspections
為什麼不參考Android源碼的方式來, 而非得定義一個讓調用者抓狂的方法, 源碼如下:
public void setBackgroundColor(@ColorInt int color) { ... } public void setBackgroundResource(@DrawableRes int resid) { ... }
多註解程式碼如下:
這麼寫是有問題的. 對IDE來說, 這是有歧義的, 你又要是Color色值, 又要是Color資源引用, 會有這樣的Int值嗎?
本身這類註解只是IDE輔助用的, 即編譯時就發現問題, 開啟
Inspections
可以停用這類Lint, 如下圖:為什麼不參考Android源碼的方式來, 而非得定義一個讓調用者抓狂的方法, 源碼如下: