首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中将Integer包装类传递给方法?

如何在java中将Integer包装类传递给方法?
EN

Stack Overflow用户
提问于 2011-03-29 19:17:05
回答 3查看 5.7K关注 0票数 3

java中的Ex:

代码语言:javascript
复制
class A {
    private Integer x = new Integer(0);

    public void setValue(Integer q) {
        q = 20;
    }

    public void callX() {
       setValue(x);        // this does not set x to be 20, which is what i need. Is there a way?
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-29 19:21:46

你不能。

包装器类型是不可变的,因此它们有效地模拟了原始类型的行为:通过执行q = 20,您可以使参数q使用值20指向Integer的新实例,但它不会更改调用方法中由x引用的原始实例。

票数 9
EN

Stack Overflow用户

发布于 2011-03-29 19:21:22

你可以使用AtomicInteger,它是可变的:

代码语言:javascript
复制
private AtomicInteger x = new AtomicInteger(0);

public void setValue(AtomicInteger q) {
    q.set(20);
}

public void callX() {
    setValue(x);
}
票数 8
EN

Stack Overflow用户

发布于 2011-03-29 19:30:03

在Java中,这种行为会被认为是非常混乱的。通常,像setValue这样的设置器接受一个值,并且不改变它的参数。getter通常用于返回值。

顺便说一句:除非你有充分的理由,否则不要使用包装器。

相反,您可能会这样做。

代码语言:javascript
复制
class A {
 public int getValue() {
    return 20;
 }

 public void callX() {
   int x = getValue(); // this sets x to be 20.
 }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5471642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档