正在通过引用将对象传递给构造函数

用户名

假设我有一个名为的类和构造函数TestClass

public class TestClass {
    Foo foo;

    public TestClass(Foo foo) {
        this.foo = foo; 
    }
}

在这里,构造函数接受一个对象,该对象是class的实例Foo假设我static void main(String[] args)做了以下与任何事情完全分开的事情TestClass

  • (1)实例化 foo

  • (2)将实例传递fooTestClass构造函数

  • (3)改变内部状态 foo

步骤(3)之后,我的实例foo 的状态TestClass 也会更改吗?

Arshajii

没有通过引用传递。相反,它是通过引用传递的,这是一个微妙但重要的区别。

在您foomain()方法的其余部分进行foo突变后,正如您声明的那样,该字段还将显示这些突变,因为两个变量都指向同一实例。但是,如果您重新分配 foo新内容,则该foo字段不会更改。如果foo确实是通过引用传递的,那将是不正确的简而言之,一切都通过Java中的值传递。碰巧对象通过引用处理,因此这些引用的值被传递。

我将举一个例子来说明这一点。考虑以下类别:

class A {
    public int n;

    public A(int n) {
        this.n = n;
    }
}

和以下方法:

public static void mutate(A a) {
    a.n = 42;
}

现在我们可以有这样的事情:

A a = new A(0);
A.mutate(a);

System.out.println(a.n);
42

我们可以看到的状态a已更改mutate()现在让我们修改静态方法:

public static void mutate(A a) {
    a = new A(42);
}

然后再试一次:

A a = new A(0);
A.mutate(a);

System.out.println(a.n);
0

如您所见,的状态a不变。如果已将引用传递给函数,则我们期望重新分配的效果在方法的范围之外显而易见。但是,实际上已经通过了一些引用,因为对参数进行更改也会导致方法之外的更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过引用将对象传递给构造函数

来自分类Dev

通过引用将对象传递给类构造器-对行为感到困惑

来自分类Dev

通过引用将对象传递给其他对象

来自分类Dev

无法将对象传递给Typescript中的构造函数

来自分类Dev

通过引用将对象传递给线程

来自分类Dev

将对象传递给Lua函数始终引用自身

来自分类Dev

如何在C ++中通过引用将对象传递给函数?

来自分类Dev

c ++:将对象传递给函数

来自分类Dev

将对象传递给PowerShell函数

来自分类Dev

将对象传递给函数方法

来自分类Dev

通过引用将函数对象传递给std算法

来自分类Dev

将对象引用传递给构造函数,这是DI吗?

来自分类Dev

将对象传递给构造函数中的函数和动态内存分配

来自分类Dev

模拟moq,尝试将对象传递给具有多个参数的构造函数

来自分类Dev

C#静态类:我应该将对象传递给构造函数吗?

来自分类Dev

使用structuremap在运行时将对象传递给类构造函数

来自分类Dev

模拟moq,尝试将对象传递给具有多个参数的构造函数

来自分类Dev

C#静态类:我应该将对象传递给构造函数吗?

来自分类Dev

通过引用将对象传递给C ++ 11中的std :: thread

来自分类Dev

为什么在将对象传递给函数时未设置引用

来自分类Dev

将对象传递给函数调用中的函数

来自分类Dev

通过const&和&将对象传递给相同的函数

来自分类Dev

通过NodeJS将对象传递给PHP

来自分类Dev

通过NodeJS将对象传递给PHP

来自分类Dev

将对象数组的引用传递给函数

来自分类Dev

在jQuery中将对象传递给回调函数

来自分类Dev

如何将对象传递给单独的函数-Python

来自分类Dev

将对象传递给R中的generate()评估的函数

来自分类Dev

在jQuery中将对象传递给回调函数

Related 相关文章

  1. 1

    如何通过引用将对象传递给构造函数

  2. 2

    通过引用将对象传递给类构造器-对行为感到困惑

  3. 3

    通过引用将对象传递给其他对象

  4. 4

    无法将对象传递给Typescript中的构造函数

  5. 5

    通过引用将对象传递给线程

  6. 6

    将对象传递给Lua函数始终引用自身

  7. 7

    如何在C ++中通过引用将对象传递给函数?

  8. 8

    c ++:将对象传递给函数

  9. 9

    将对象传递给PowerShell函数

  10. 10

    将对象传递给函数方法

  11. 11

    通过引用将函数对象传递给std算法

  12. 12

    将对象引用传递给构造函数,这是DI吗?

  13. 13

    将对象传递给构造函数中的函数和动态内存分配

  14. 14

    模拟moq,尝试将对象传递给具有多个参数的构造函数

  15. 15

    C#静态类:我应该将对象传递给构造函数吗?

  16. 16

    使用structuremap在运行时将对象传递给类构造函数

  17. 17

    模拟moq,尝试将对象传递给具有多个参数的构造函数

  18. 18

    C#静态类:我应该将对象传递给构造函数吗?

  19. 19

    通过引用将对象传递给C ++ 11中的std :: thread

  20. 20

    为什么在将对象传递给函数时未设置引用

  21. 21

    将对象传递给函数调用中的函数

  22. 22

    通过const&和&将对象传递给相同的函数

  23. 23

    通过NodeJS将对象传递给PHP

  24. 24

    通过NodeJS将对象传递给PHP

  25. 25

    将对象数组的引用传递给函数

  26. 26

    在jQuery中将对象传递给回调函数

  27. 27

    如何将对象传递给单独的函数-Python

  28. 28

    将对象传递给R中的generate()评估的函数

  29. 29

    在jQuery中将对象传递给回调函数

热门标签

归档