Java可以改变,我可以在Java中改变参数吗?

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?

解决方法:

看起来你对Mutability感到困惑.可变性只是改变对象状态.您在示例中显示的不仅仅是可变性.您通过将该实例引用到其他实例(=)来完全更改实例.

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;

}

标签:java,oop,mutation

来源: https://codeday.me/bug/20190622/1265704.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值