相关疑难解决方法(0)

设置短值Java

我在J2ME中编写了一些代码.我有一个方法课setTableId(Short tableId).现在当我尝试编写setTableId(100)它时会出现编译时错误.如何在不声明另一个短变量的情况下设置短值?

设置Long值时,我可以使用setLongValue(100L)它,它的工作原理.那么,L这里的含义是什么,Short价值的特征是什么?

谢谢

java literals primitive-types

96
推荐指数
4
解决办法
11万
查看次数

数字文字的自动装箱:包装器初始化与传递方法参数不一致

请考虑2个案例:

//1
Short s = 10; //obviously compiles    

//2
takeShort(10); //error - int is not applicable

//where:
static void takeShort(Short s) {}
Run Code Online (Sandbox Code Playgroud)

我假设情况1被编译器更改为:

short _temp_s = 10;
Short s = Short.valueOf(_temp_s);
Run Code Online (Sandbox Code Playgroud)

你能否解释一下编译器在案例2中尝试做什么,所以它不能编译?如果它不像在案例1中那样尝试应用自动装箱,那么为什么呢?

编辑

johnchen902中对JSL的引用解释了编译器的行为.

仍然不完全清楚为什么JLS不支持方法调用转换的"缩小原始转换后跟装箱转换",因为它在分配转换中为byte,short,char或int类型的常量表达式的情况.有任何想法吗 ?

java primitive autoboxing compiler-errors compilation

7
推荐指数
1
解决办法
548
查看次数