在Java中通过引用传递枚举类型。

10

在Java中如何通过引用传递枚举参数?有什么解决方案吗?


2
“按引用传递参数”的正常原因是您想要修改它。通常在Java中可以这样做,因为变量实际上是引用 - 但是修改枚举通常是一个非常糟糕的想法。 - DJClayworth
2个回答

15

Java是按值传递的 - 总是。

你传递的是引用,而不是对象。 引用是按值传递的。

你可以在传递到函数中的可变对象上更改其状态,但无法更改引用本身。


8

在Java中,你不能通过引用传递任何参数。

我能想到的唯一解决方法是创建一个包装类,并封装一个枚举。

public class EnumReference {
    public YourEnumType ref;
}

然后你可以这样使用它:

public void someMethod(EnumReference reference) {
    reference.ref = YourEnumType.Something;
}

现在,引用将包含枚举的不同值;基本上模拟了按引用传递。

我实际上为这种情况专门创建了一个通用的IndirectReference<E>类型。我厌倦了传递数组。 - Jonathan
@Jon,说得好。我通常似乎不会遇到传值的问题。它从来没有妨碍过我。 - jjnguy
4
你可以使用AtomicReference。 - ColinD
@ColinD 我通常不需要原子性。不过,好主意,谢谢。 - Jonathan
@Nick,如果你想要的效果是更改引用,那么返回类型并不像实际更改引用那样有帮助。 - jjnguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接