如果我有一个方法
void f(byte b);
我怎么能调用它与一个数字参数没有强制转换?
f(0);
给出一个错误。
如果我有一个方法
void f(byte b);
我怎么能调用它与一个数字参数没有强制转换?
f(0);
给出一个错误。
当前回答
你不能。基本数值常量被认为是整数(如果后面有“L”,则为长值),因此必须显式地将其向下转换为字节以作为参数传递。据我所知,没有捷径。
其他回答
用重写方法怎么样
void f(int value)
{
f((byte)value);
}
这允许f(0)
你不能。基本数值常量被认为是整数(如果后面有“L”,则为长值),因此必须显式地将其向下转换为字节以作为参数传递。据我所知,没有捷径。
在Java 7和更高版本中,你可以这样指定一个字节字面值: 字节字节=(字节)0b00100001;
参考:http://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html
如果你在代码中传递文字,是什么阻止你提前简单地声明它?
byte b = 0; //Set to desired value.
f(b);
恐怕你得投:
f((byte)0);
我相信它将在编译时而不是执行时执行适当的转换,因此它实际上不会导致性能损失。只是不方便:(