Java 将变量从函数返回到输入变量
如何通过调用函数来更改变量 范例Java 将变量从函数返回到输入变量,java,android,Java,Android,如何通过调用函数来更改变量 范例 byte a; ... void setBit(byte variable, byte n){ variable |= (1<<n); } ... setBit(a,2); System.out.println(a); // expected output "2" 您可以使用setter方法的return,如: private byte setBit(byte variable, byte n){ variable |= (1&l
byte a;
...
void setBit(byte variable, byte n){
variable |= (1<<n);
}
...
setBit(a,2);
System.out.println(a); // expected output "2"
您可以使用setter方法的return,如:
private byte setBit(byte variable, byte n){
variable |= (1<<n);
return variable;
}
答案是,除非您制作自己的字节包装器,允许修改其内部结构,否则无法实现 <>你不能像C++那样通过引用传递基本类型。 在很多情况下,这是一件好事,在某些特殊情况下,这是一件值得错过的事情 与Venkatesh试图建议的类似,但不同之处在于它不使用Byte(这是不可变的afaik)对象。您可以实现ByteWrapper,但它不会自动转换为Byte之类的基本类型。您必须调用byteWrapper.getByte() 然后你可以用
void setBit(ByteWrapper bw, byte n){
bw.setByte(byte.getByte() |= (1<<n));
}
void setBit(字节包装bw,字节n){
bw.setByte(byte.getByte()|=(1这不是Java的工作方式。您能做的最好的事情是更改对象的属性。您不能修改原语类型变量所持有的调用者值。您需要返回修改后的字节
,并将其分配给调用者中的某个对象。或者,使用数组或对象。正如我在讨论中所写的,如果可能的话,我希望防止这种情况发生。
a = setBit(a, 2);
public class ByteWrapper {
private byte byteValue = 0;
public ByteWrapper(byte b) {
byteValue = b;
}
public byte getByte() { return b; }
public void setByte(byte b) { byteValue = b; }
}
void setBit(ByteWrapper bw, byte n){
bw.setByte(byte.getByte() |= (1<<n));
}