java - 由于指针不存在,我该如何在java中执行此操作?

标签 java pointers

假设我创建了一个 A 类实例,其中包含一个字段 int value .

int D;
A test = new A();
test.value = 3;

我想创建一个变量D它将链接到类实例的测试值。每当这个值改变我的变量 D将更改为。如果我知道链接,我就可以做到这一点。当发生更改时,我可以简单地执行以下操作:

D = test.value;

但是,假设我想要 D在程序运行时链接到不同的值(来自其他实例,比如说 test2test3 )。在这种情况下,我可以使用 switch 语句并根据链接使用不同的命令。

switch (help_var):
    case 1:
        D = test.value;
        break;
    case 2:
        D = test2.value;
        break;
    case 3:
        D = test3.value;
        break;

改变指针会非常有用。当程序运行时,我的指针会改变。在 C 语言中,我会在每种情况下执行以下操作:

D = *pointer;

有没有办法将(test.value)引用放入变量中并在Java中使用类似的东西?

最佳答案

事实证明,从 1.8 版开始,java 已经内置了此功能 IntegerProperty类,但由于它的 API 在某种程度上超出了这个问题的范围,所以让我也给出一个极简的例子:

public class IntContainer {
    private int i;

    public int getValue();
    public void setValue(int value);

}

这样的容器类将与 C 指针做大约相同的事情,尽管比较它们首先没有意义。
但是,当您将 int value 替换为 IntContainer 指针(或 IntegerProperty )并更改 IntContainer 的 值时,修改对于每个持有对同一 IntContainer 的引用的实例。

关于java - 由于指针不存在,我该如何在java中执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48240733/

相关文章:

将值与 void* 进行比较

java - 为什么即使机器上运行了多个 java 应用程序也没有 JMX 冲突?

java - 随机误差。 "javax.servlet.ServletException: java.lang.NoSuchFieldError: deferredExpression"

java - 方法中仅运行单线程

c++ - 通过函数初始化指针

c - C 中的 Malloc 复制先前分配的字符串?

java - Android Proguard - 一步一步

java - 使用 magnolia cms 在 tomcat 中部署新 war

c - 当我们可以执行 char *string = "variables whose values are an address"时,指针 "string"怎么样?

c++ - 为什么 std::unique_ptr 比标准指针慢得多……在优化之前?