如何使用'this'作为另一个对象的参数?

时间:2013-03-05 20:16:18

标签: java reference parameter-passing this

首先我知道这一定很简单,我一直在尝试在Stackoverflow.com和Google上阅读类似的问题,但我仍然无法让我的程序运行。

我很快写了一篇关于我的程序试图做的摘要:

    public class One{

    public One(){
        Two t = new Two(this);
    }

    public void doSomething(){
        sout("HERE");
    }

    public static void main(String[] args){
        One o = new One()
        Two t = new Two(o);
    }

}

    public class Two{

        public Two(One o){
            One o = o;
            o.doSomething();
        }
    }

当我运行程序时,我从方法调用o.doSomething()得到一个NullPointerException。我已经尝试了一段时间来解决它,但我很难过。如果有人能够快速告诉我修复它将会非常感激。

4 个答案:

答案 0 :(得分:5)

One o = o;

我不知道这是做什么的,但它不会起作用。这应该是一个成员变量(this.o)吗?要做到这一点,将它放在类而不是函数中:

public class Two{
    private One o;

    public Two(One o){
        this.o = o;
        o.doSomething();
    }
}

如果您不需要,请完全删除它:

public class Two{
    public Two(One o){
        o.doSomething();
    }
}

答案 1 :(得分:0)

方法sout("HERE")不存在。如果您尝试将某些内容打印到控制台,则应使用System.out.println("HERE")

答案 2 :(得分:0)

我修改了你的课程,请检查我认为它应该有效

公共课一{{/ p>

public One(){
    Two t = new Two(this);
}

public void doSomething(){
    System.out.println("HERE");
}

public static void main(String[] args){
    One o = new One();
    Two t = new Two(o);
}  

}

public class Two{

    public Two(One one){
        One o = one; //just changed the parameter name to one
        o.doSomething();
    }
}

答案 3 :(得分:0)

当您想要引用当前对象时,使用“this”这个词;另外,当你想要访问当前对象的变量“something”时,你可以使用“this.something”。

例如,您可以在代码中插入它以区分“this.o”(对象的属性)和“o”(输入参数):

import java.io.*;


public class One{
    public One(){
        Two t = new Two(this);
    }

    public void doSomething(){
        System.out.println("HERE");
    }

    public static void main(String[] args){
        One o = new One();
        Two t = new Two(o);
    }
}


public class Two{
    One o;

    public Two(One o){
        this.o = o;
        this.o.doSomething();
    }
}

这将编译并生成输出:

下面
该处

这就是你想要的吗?