Hri*_*sto 9 java overloading pass-by-reference primitive-types
我想调用一个可能采用不同版本的方法,即类型为输入参数的相同方法:
我想这样做的方法是"重载"方法(我认为这是正确的术语?):
public void getValue(byte theByte) {...}
public void getValue(short theShort) {...}
... etc ...
Run Code Online (Sandbox Code Playgroud)
...但这意味着我必须通过引用传递原始类型...类似于C++,其中方法具有外部效果,其中它可以修改其范围之外的变量.
有没有办法在不创建新类或使用原始类型的Object版本的情况下执行此操作?如果没有,有关替代战略的任何建议吗?
让我知道是否应该进一步解释清除任何混淆.
我实际上要做的是从一组位构造基本类型.因此,如果我正在处理方法的字节版本,我希望我的工作能够得到8位并返回字节(因为我无法通过引用传递).
我问这个问题的原因是因为我用bit做的工作是非常重复的,我不想在不同的方法中使用相同的代码.所以我想找到一种方法让我的ONE方法知道我正在谈论多少位......如果我正在处理一个字节,那么就是8位,如果我正在处理一个短的16位等等...
Java 始终是按值传递的.Java中没有pass-by-reference.它是在规格中写的!
虽然Java支持重载,但所有参数都是按值传递的,即调用者看不到赋值方法参数.
在您的代码段中,您尝试返回不同类型的值.由于返回类型不是方法签名的一部分,因此不能使用不同的返回类型进行重载.因此,通常的做法是:
int getIntValue() { ... }
byte getByteValue() { ... }
Run Code Online (Sandbox Code Playgroud)
如果这实际上是转换,则标准命名为
int toInt() { ...}
byte toByte() { ... }
Run Code Online (Sandbox Code Playgroud)