Maison > Questions et réponses > le corps du texte
我有一个方法,在参数列表上有一个参数(接受一个颜色类型),数据类型是int型
但是我的方法内部,这个int型根据传入的一个boolean类型做了判断,
所以它
* 既可以是`@ColorRes` (颜色代码的资源ID,int类型)
* 也可以是`@ColorInt` (颜色代码在Color类中的成员变量,int类型)
但是方法参数上又不能写(@ColorRes|@ColorInt)
同样的参数列表也不能用方法重载来搞定。
所以就想问一下有没有办法可以让两个注解同时生效的?
PHP中文网2017-04-18 10:55:55
Le code pour plusieurs annotations est le suivant :
public void setColor(@ColorInt @ColorRes int color){
// TODO
}
Il y a un problème avec l'écriture de cette façon. Pour les IDE, c'est ambigu. Si vous voulez une valeur Color et une référence de ressource Color, y aura-t-il une telle valeur Int
Ce type d'annotation en lui-même est juste ça ? est utilisé pour l'assistance IDE, c'est-à-dire que si des problèmes sont détectés lors de la compilation, vous pouvez désactiver ce type de Lint en ouvrant Inspections
, comme indiqué ci-dessous :
Pourquoi ne pas se référer au code source d'Android au lieu de définir une méthode qui rend fou l'appelant ? Le code source est le suivant :
public void setBackgroundColor(@ColorInt int color) {
...
}
public void setBackgroundResource(@DrawableRes int resid) {
...
}