Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将此作为参数传递给方法_Java - Fatal编程技术网

Java将此作为参数传递给方法

Java将此作为参数传递给方法,java,Java,请阅读以下教程的第4点(使用此关键字) 这个怎么可能是一个方法的形式参数呢 对于构造函数,如果构造函数类似于-Const(objectobj),我们可以传递this,只需调用构造函数即可 在方法中将此作为实际参数传递时,有什么可能的情况会派上用场呢?您可以从构造函数调用此函数来调用其他构造函数(基于调用例如this():您正在调用默认构造函数this(param)您正在调用paramitarized构造函数。现在这是一个参数,底线是,这指的是当前对象,所以在任何地方,如果您想将当前对象作为参数

请阅读以下教程的第4点(使用此关键字)

这个
怎么可能是一个方法的形式参数呢

对于构造函数,如果构造函数类似于-Const(objectobj),我们可以传递
this
,只需调用构造函数即可


在方法中将
作为实际参数传递时,有什么可能的情况会派上用场呢?

您可以从构造函数调用此函数来调用其他构造函数(基于调用例如this():您正在调用默认构造函数this(param)您正在调用paramitarized构造函数。现在这是一个参数,底线是,这指的是当前对象,所以在任何地方,如果您想将当前对象作为参数传递给任何方法,请传递它。我希望这会有所帮助。如果您正确阅读了教程,您可以真正理解。

也许您混淆了
is()

第一个用于调用构造函数。对于eaxmple,您可以提供一个初始化对象的默认构造函数。然后,您可以提供具有特殊功能的附加构造函数。您可以提供类似于
initialize()的内容,而不是重写初始化
函数或调用特定的contstructor(在本例中为默认值)

调用不同构造函数的示例:

 public class TestClass
 {
      private int x;
      private String s;

      public TestClass()
      {
          x = 0;
          s = "defaultvalue";
      }

      public TestClass(int iv)
      {
          this();    <-- Default constructor invoked
          x = iv;
          s = "defaultvalue1";
      }

      public TestClass(int iv, String sv)
      {
          this(iv);   <-- int Constructor invoked, which in turn invokes the default constructor
          s = sv;
      }
 }

正如其他人已经指出的那样,此
引用当前对象并用于传递对自身的引用。我只想举例说明,希望能为您澄清这一点。通常情况下,您会这样做的场景之一是事件处理或通知

假设您有一个
EntityManager
,并且希望在添加或删除
实体时随时触发一个
UpdateEvent

public class EntityManager implements ApplicationEventPublisher {

    Set<Entity> entities = new HashSet<Entity>();

    public void addEntity (Entity e) {
        entities.add (e);
        publishEvent (new UpdateEvent (this, UpdateType.ADD, e));
    }

    public void removeEntity (Entity e) {
      if (entities.contains (e)) {
        entities.remove (e);
        publishEvent (new UpdateEvent (this, UpdateType.REMOVE, e));
      }
    }

    protected void publishEvent (Event e) {
      // handles the nitty-gritty of processing events
    }
}
公共类EntityManager实现ApplicationEventPublisher{
Set entities=new HashSet();
公共无效增加额(实体e){
6.add(e);
publishEvent(newupdateEvent(this,UpdateType.ADD,e));
}
公共无效移除实体(实体e){
如果(包含(e)){
实体。删除(e);
publishEvent(newupdateEvent(this,UpdateType.REMOVE,e));
}
}
受保护的通风孔(事件e){
//处理处理事件的本质
}
}
其中
指的是作为对象本身的事件源


因此,
EntityManager
作为
事件的一部分传递,以便通知接收者稍后可以通过
事件访问它
方法调用。

既然ctor已经内置了它,你到底为什么要将它传递给它。没有任何意义。投票否决,投票关闭。你没有传递它,你调用this()是为了调用默认构造函数。不,你读得不好:第4点讲的是
this
,而不是
this()
。这是两件完全不同的事情。在阅读了教程后,我也不明白为什么会将此传递给一个方法。太糟糕了,这个问题被积极地关闭了。更不用说这个所谓的非问题有3个像样的答案。是的,我错了。这不是这个()…但我能举个例子,我们需要将其作为方法参数传递吗?@user2093576在方法参数中,没有太多用途;在其他类的构造函数参数中,有用途,是的,包括侦听器和构建器
public class EntityManager implements ApplicationEventPublisher {

    Set<Entity> entities = new HashSet<Entity>();

    public void addEntity (Entity e) {
        entities.add (e);
        publishEvent (new UpdateEvent (this, UpdateType.ADD, e));
    }

    public void removeEntity (Entity e) {
      if (entities.contains (e)) {
        entities.remove (e);
        publishEvent (new UpdateEvent (this, UpdateType.REMOVE, e));
      }
    }

    protected void publishEvent (Event e) {
      // handles the nitty-gritty of processing events
    }
}