java中通过引用传递?

发布于 2025-01-08 13:58:07 字数 463 浏览 0 评论 0原文

我正在尝试为 Android GSM 构建一个小游戏。我有很多单位,所有单位都有目的地。为了计算目的地,我使用了一个名为 CalDes 的函数。这个函数 CalDes 正在计算我单位的速度。因此,我发送了一些变量,我必须对其进行编辑并再次使用它们。为此,我必须发送这些变量作为参考。这是一个简单的 C++ 如何在 java 中做到这一点?

void swap(SomeType& arg1, Sometype& arg2) {
    SomeType temp = arg1;
    arg1 = arg2;
    arg2 = temp;
}
...
SomeType var1 = ...; // value "A"
SomeType var2 = ...; // value "B"
swap(var1, var2); // swaps their values!

I'm trying to build a litle gam for android GSMs. I hava lots of units and all of them have destinations. To calculate destination I'm using a function called CalDes. This function CalDes is calculating my unit's speed. So I'm sending some variables into which I have to edit and use em again. For this I have to send these variables with reference. Here is a simple for C++ How to do that in java?

void swap(SomeType& arg1, Sometype& arg2) {
    SomeType temp = arg1;
    arg1 = arg2;
    arg2 = temp;
}
...
SomeType var1 = ...; // value "A"
SomeType var2 = ...; // value "B"
swap(var1, var2); // swaps their values!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寄居者 2025-01-15 13:58:08

Java 根本没有引用传递。您有几个选择:

  1. 以数组形式传递数据:

    void swap(SomeType[] args) {
        SomeType temp = args[0];
        参数[0] = 参数[1];
        args[1] = 温度;
    }
    

    ...但是使用它在调用代码中很痛苦:

    SomeType a = ...;
    SomeType b = ...;
    SomeType[] args = new SomeType[] { a, b };
    交换(参数);
    a = 参数[0];
    b = 参数[1];
    
  2. 创建一个具有公共 SomeType 成员的对象,并传递在对象引用中。

    void swap(SomeTypeContainer c) {
        SomeType temp = ca;
        ca = CB;
        cb = 温度;
    }
    

    这与 #1 非常相似,但调用代码可能更方便。

    SomeTypeContainer c = new SomeTypeContainer(/* ... 创建 a 和 b ... */);
    // 直接使用ca和cb
    交换(c);
    // 直接使用 ca 和 cb,它们现在已交换
    

Java doesn't have pass-by-reference at all. You have a couple of options:

  1. Pass the data in an array:

    void swap(SomeType[] args) {
        SomeType temp = args[0];
        args[0] = args[1];
        args[1] = temp;
    }
    

    ...but using it is a pain in the calling code:

    SomeType a = ...;
    SomeType b = ...;
    SomeType[] args = new SomeType[] { a, b };
    swap(args);
    a = args[0];
    b = args[1];
    
  2. Create an object that has public SomeType members, and pass in the object reference.

    void swap(SomeTypeContainer c) {
        SomeType temp = c.a;
        c.a = c.b;
        c.b = temp;
    }
    

    Which is very similar to #1, but probably more convenient to work with from calling code.

    SomeTypeContainer c = new SomeTypeContainer(/* ... something that creates a and b ... */);
    // Use c.a and c.b directly
    swap(c);
    // Use c.a and c.b directly, they're now swapped
    
攀登最高峰 2025-01-15 13:58:08

在 Java 中,每个对象总是通过引用传递。但不能通过引用传递变量。如果您确实需要它,则必须再使用一种间接方式。

In Java, every object is always passed by reference. But you cannot pass variables by reference. If you really need that, you have to use one more indirection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文