我收到这行代码的错误:
这就是 getBackground()
的样子:
public class MyClass {
...
private String background;
public String getBackground() {
return background;
}
...
}
我已经验证 Color.parseColor
接受一个字符串。为什么会发生这种情况,我怎样才能让编译器满意?
这不会阻止应用程序运行,所以这也许是静态分析器的事情?我尝试将 getBackground() 的返回值放入本地,并检查它是否为非空且 length() >= 1
,但这似乎没有解决任何问题。
最佳答案
看起来很像静态分析器检查之一的问题。如果将 String
文字传递给 Color#parseColor(String)
,例如Color.parseColor("#eee");
问题消失。
看起来静态分析器不够智能,无法推断出您传入的值(即 getBackground()
的返回值)在所有可能的情况下都不为 null,因此它向您显示 可能该值为null
或为空。如果您确定颜色 String
不为空,您可以像这样抑制它:
//noinspection ResourceType
view.setColor(Color.parseColor(model.getColor().getBackground()));
关于java - "Length must be at least 1 (was -1)"是什么原因导致此问题以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610787/