我有一个模型,其中一个setter期望Color Resource,但它不能直接使用上述资源而不解决(通过使用ContextCompat)。限制方法来接受由ContextCompat解决的资源
有没有一种方法可以注释我的方法来指示/限制它?
public class SimpleModel {
private String name;
private int bgColor;
private int bgImage;
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public int getBgColor() {
return bgColor;
}
public void setBgColor(@ColorInt final int bgColor) {
this.bgColor = bgColor;
}
public int getBgImage() {
return bgImage;
}
public void setBgImage(@DrawableRes final int bgImage) {
this.bgImage = bgImage;
}
}
我所知道的@ColorRes
和@ColorInt
- 但他们不完全解决我的问题。
这是一个注释可以照顾我吗? JavaDocs怎么样?
如果不是 - 我如何检查传递的资源是否可用?
“我有一个模型,其中一个setter期望的颜色资源” - 这不是你的问题中的模型,就像我可以告诉的那样。您正在接受'@ ColorInt'(已经解析)和'@ DrawableRes'(它不是一种颜色资源)。 – CommonsWare
@CommonsWare所以没有办法限制用户只发送'R.color.red'而不是'ContextCompat.getColor(context,R.color.red);' 我意识到我没有构造这个问题尽我所能。 – avluis
“因此,没有办法限制用户只发送R.color.red而不是ContextCompat.getColor(context,R.color.red)” - 具体比较应该由'@ ColorInt'捕获。 'R.color.red'不是一个颜色整数,而是一个颜色资源ID。因此,在你的问题中,我期望'model.setBgColor(R.color.red)'产生一个Lint错误,而'model.setBgColor(ContextCompat.getColor(context,R.color.red)) '不会。 – CommonsWare