我可以改变 Java 中的参数吗?
Can I mutate argument in Java?
在 C++ 中,我可能会这样做:
sometype var = somevalue;
mutate(var);
// var is now someothervalue
void mutate(sometype &a) {
a = someothervalue;
}
Java中是否有等效的东西?
我正在努力完成类似的事情:
Customer a;
public static void main(String[] args) {
a = newCustomer("Charles");
Customer b = null;
mutate(b);
System.out.println(b.getName()); // NullPointerException, expected "Charles"
}
void mutate(Customer c) {
c = a;
}
如果 Customer
是可变的,为什么会产生 NullPointerException?
看来您对可变性感到困惑。可变性只是改变对象状态。您在示例中展示的不仅仅是可变性。您通过将实例引用到其他实例 (=
) 来完全更改实例。
sometype var = somevalue;
mutate(var);
void mutate(sometype a) {
a = someothervalue; // changing a to someothervalue.
}
什么是可变性
sometype var = somevalue;
mutate(var);
var.getChangeState() // just gives you the latest value you done in mutate method
void mutate(sometype a) {
varType someParamForA= valueX;
a.changeState(someParamForA); // changing a param inside object a.
}
是的,如果可变对象在 Java 中完全有效。您可以在调用 mutate 方法后看到更改。
原语案例::
请记住,对于基元,您不能使用 Java 执行此操作。所有原始变量都是不可变的。
如果你想实现与 Java 相同的原语,你可以尝试这样的事情
int var = 0;
var = mutate(var);
int mutate(int a) {
a = a + 1;
return a;
}
在 C++ 中,我可能会这样做:
sometype var = somevalue;
mutate(var);
// var is now someothervalue
void mutate(sometype &a) {
a = someothervalue;
}
Java中是否有等效的东西?
我正在努力完成类似的事情:
Customer a;
public static void main(String[] args) {
a = newCustomer("Charles");
Customer b = null;
mutate(b);
System.out.println(b.getName()); // NullPointerException, expected "Charles"
}
void mutate(Customer c) {
c = a;
}
如果 Customer
是可变的,为什么会产生 NullPointerException?
看来您对可变性感到困惑。可变性只是改变对象状态。您在示例中展示的不仅仅是可变性。您通过将实例引用到其他实例 (=
) 来完全更改实例。
sometype var = somevalue;
mutate(var);
void mutate(sometype a) {
a = someothervalue; // changing a to someothervalue.
}
什么是可变性
sometype var = somevalue;
mutate(var);
var.getChangeState() // just gives you the latest value you done in mutate method
void mutate(sometype a) {
varType someParamForA= valueX;
a.changeState(someParamForA); // changing a param inside object a.
}
是的,如果可变对象在 Java 中完全有效。您可以在调用 mutate 方法后看到更改。
原语案例::
请记住,对于基元,您不能使用 Java 执行此操作。所有原始变量都是不可变的。
如果你想实现与 Java 相同的原语,你可以尝试这样的事情
int var = 0;
var = mutate(var);
int mutate(int a) {
a = a + 1;
return a;
}