Java中多原语参数的主方法
假设我有以下方法:Java中多原语参数的主方法,java,methods,parameters,primitive-types,Java,Methods,Parameters,Primitive Types,假设我有以下方法: public void doSomethingInteger(int i){...} public void doSomethingByte(byte b){...} public void doSomethingFloat(float f){...} public void doSomethingDouble(double d){...} 它们都执行相同的操作,只接受不同格式的变量 是否有一种方法可以编写一个我可以从这些方法中调用的方法,而不是重写每个方法的代码以使用不同
public void doSomethingInteger(int i){...}
public void doSomethingByte(byte b){...}
public void doSomethingFloat(float f){...}
public void doSomethingDouble(double d){...}
它们都执行相同的操作,只接受不同格式的变量
是否有一种方法可以编写一个我可以从这些方法中调用的方法,而不是重写每个方法的代码以使用不同的变量?您可以使用casting。您可能希望将实现放在
doSomethingDouble()
中。然后,您可以将其他方法定义为:
public void doSomethingInteger(int i) {doSomethingDouble((double)i;}
public void doSomethingByte(byte b) {doSomethingDouble((double)b;}
public void doSomethingFloat(float f) {doSomethingDouble((double)f;}
这些都是,所以你不会丢失任何信息
5.1.2。扩大原语转换
19基元类型上的特定转换称为
原语转换:
**byte to** short, int, long, float, or **double**
short to int, long, float, or double
char to int, long, float, or double
**int to** long, float, or **double**
long to float or double
**float to double**
加宽基元转换不会丢失有关
数值的总大小
从一个整型到另一个整型的扩展原语转换
整数类型,或在strictfp表达式中从float到double
(§15.4),不会丢失任何信息;数值为
完全保留下来
你可以直接写
void doSomething(double d) {
所有其他数字类型
byte、short、char、int、long、float将扩展为double
详细信息可能取决于您未向我们展示的代码。我们不知道你的方法应该做什么,所以根据目前发布的信息,我想我们中没有人能够帮助你。谢谢你,我不确定double是否能够容纳所有其他原语!这里不需要强制转换。@user3718550所有那些转换为双精度的转换都是加宽转换,所以没有问题。“不丢失信息”是错误的--long
todouble
在2^53
以上的值上丢失精度。关键的短语是“总体大小”,但小的比特会失去精度。@LouisWasserman没有人在谈论从长到双的转换。只有int,byte,float到double。