如何使用'this'作为另一个对象的参数?
我首先知道这一定很简单,我一直试图在这里阅读类似的问题,在Stackoverflow.com和谷歌上,但我仍然无法让我的程序工作。如何使用'this'作为另一个对象的参数?
我赶紧写了什么我的程序试图做一个摘要:
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();
}
}
当我运行程序时,我得到一个NullPointerException异常,从方法调用o.doSomething()。我一直试图解决它,但我很难过。如果有人能够迅速告诉我修复它将不胜感激。
方法sout("HERE")
不存在。如果您尝试打印某些内容以进行控制台操作,则应使用System.out.println("HERE")
。
作为评论指出,这可能是特定IDE的捷径。 – arshajii 2013-03-05 20:20:23
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();
}
}
我已经修改了你的类请我认为这应该工作
公共类一{
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();
}
}
“this”字用于引用当前对象;另外当你想访问当前对象的变量“something”时,你可以使用“this.something”。
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();
}
}
这将编译生成:
例如,你可以在你的代码从“O”(输入参数)区分“this.o”(对象的属性)插入输出:
这里
这里
这是你想要的吗?
我在5分钟前完成了这个程序,这正是我得到的。在我的实际程序中,我将它传递给了一个线程。我现在要调试它,在我想要发送的对象中添加toString方法,并在该线程中添加System.Out对象。 – 2013-03-05 20:46:15
“doSomething”中的NPE的实际行是什么? – 2013-03-05 20:17:39
'sout'是什么? – 2013-03-05 20:18:22
@BrendanLong一个IntelliJ快捷键:p – LuckyLuke 2013-03-05 20:18:51