我有简单的代码片段
getMarkerCode() == -1 ? null : getMarker(getMarkerCode());
其中getMarkerCode()
总是返回-1(字节类型)。但每次都运行getMarker(getMarkerCode())
方法。
即使将条件修改为:
if(getMarkerCode() == (byte)-1)
return null;
else
return getMarker(getMarkerCode());
结果没有改变。怎么了?
它没有包装到Byte
课程吗?
Byte.compare(byte,byte)需要SDK> = 19,但应用程序支持API级别16
答案 0 :(得分:0)
Referring to this post您应该使用compareTo
使用字节而不是注释中指向的@Sergey
字节。你可以很容易地做到这一点,因为你正在手工和#34;你可以毫不费力地改变类型。
比字节应该像new Byte("-1")
new Byte("-1").compareTo(getMarkerCode()) == 0 ? null : getMarker(getMarkerCode());
结果是:
Returns | Meaning
--------------------------------------------------------------------
0 | if this Byte is equal to the argument Byte;
less than 0 | if this Byte is numerically less than the argument Byte;
greater than 0 | if this Byte is numerically greater than the argument Byte (signed comparison).
从字节到字节你可以简单地投射
byte b;
//plus instantiating
//...
Byte bObj = b;
答案 1 :(得分:0)
正如我所料,Android studio中的问题是即时运行选项。我禁用它,问题就消失了。
小心即时运行