-1

我是 Java 新手,但我对 C++ 有相当多的经验。我想在 Java 中做一些只能用 C++ 中的指针来完成的事情。由于代码解释了一千多个单词:

class Parent;
class Kid;

class Parent{
public:
    Parent();
private:
    Kid *kid;
};

class Kid{
public:
    Kid(Parent*);
private:
    Parent *parent;
};

Parent::Parent(){
    //give self
    kid = new Kid(this);
}

Kid::Kid(Parent* parent){
    //kid can now adress the class containing the instance
    parent = parent;
}

那么,这在 Java 中是否可行,如何实现?

4

3 回答 3

2

您是正确的,在 Java 中没有“指针”,但实际上,对对象的所有引用都非常像指针。因此,每当变量、字段或参数引用一个对象时,它就是“指向”内存中的某个特定对象。

因此,在 Java 中,您的代码如下所示:

class Parent {
    private Kid kid;
    public Parent() {
        kid = new Kid(this);
    }
}

class Kid {
    private Parent parent;
    public Kid(Parent p) {
        parent = p;
    }
}
于 2013-05-06T16:17:26.103 回答
1

这在 Java 中很容易。所有 Object 类型的 Java 变量都是引用。所以 Kid 可以有一个 Parent 字段来引用 Parent 对象。

public class Parent{
    private Kid kid;
    public Parent( ) {
        kid = new Kid( this );
    }
}

public class Kid {
    private Parent parent;
    public Kid( Parent p ) {
       parent = p;  // Copies the *reference* to the parent, not the object itself.
    }
}
于 2013-05-06T16:15:29.297 回答
1

在java 中,您使用new 创建的每个对象实际上都是一个引用,即一个指针。因此,只需使用“新”创建所有内容,您就可以了。

public class Parent{
public Parent() { kid = new Kid(this) }
private Kid kid;
}

public class Kid{

public Kid(Parent parent){ this.parent = parent }
private Parent parent;
};
于 2013-05-06T16:16:11.493 回答