即使传递的值在可接受的范围内,下面的代码也会出现编译错误。
情况1
void test(byte a, int b) { }
如果上面的方法由于test(2,3);
产生编译错误而被调用,因为编译器理解test是一个接受两个int
参数但有一个byte
和integer
参数的方法。
但是byte
值可以是implicitly typecasted
to int
,那么这里的问题是什么?
byte x=2; //valid as value is in between -128 to 127.
与在函数调用中传递参数的情况相同test(2, 3)
,可以将2分配给测试方法参数byte a
,但是为什么会出现编译错误。
情况二
void test(int ch) { }
上面的代码接受int参数,但是当传递char值时,它将成功编译。所以,这是奇怪的行为。
有人认为,当将字面值分别分配给变量而不是方法调用时,这种隐式转换适用。(同意情况1,然后考虑情况2)。
如果是这样的话,为什么在上述方法中将字符文字传递给int参数(方法调用中的类型转换)。
扬帆大鱼
月关宝盒
相关分类