我是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中是否可行,以及如何实现?
答案 0 :(得分: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;
}
}
答案 1 :(得分: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.
}
}
答案 2 :(得分: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;
};