限制方法以接受ContextCompat解析的资源

时间:2017-07-23 21:14:21

标签: java android android-library

我有一个模型,其中一个setter期望Color Resource但是如果没有解析它就不能直接使用所述资源(通过使用ContextCompat)。

有没有办法可以注释我的方法来指示/限制它?

str1 == str7

我了解@ColorRes@ColorInt - 但他们并没有完全解决我的问题。

这是注释可以为我照顾的东西吗? JavaDocs怎么样?

如果没有 - 我如何检查传递的资源是否可用?

1 个答案:

答案 0 :(得分:1)

@ColorRes表示要求参数为颜色资源ID。

@ColorInt实际上是@!ColorRes,如果应用"而不是"操作员可以使用注释。它表示要求参数为int,而不是颜色资源ID。

因此,您的public void setBgColor(@ColorInt final int bgColor)方法应该会产生以下结果:

  • model.setBgColor(R.color.red):Lint错误

  • model.setBgColor(getColor(R.color.red)):没有错误

  • model.setBgColor(ContextCompat.getColor(this, R.color.red)):没有错误

如果由于某种原因,你需要区分后两种情况......我认为没有办法做到这一点。