Processing.org - 按值传递对象

时间:2014-08-06 05:16:46

标签: java processing

我对这门语言很陌生。我有一个对象,我想通过值将它传递给另一个方法:

// Drawings
class Drawings
{
   // Has some variables

   Drawings()
   {

   }

   // Hass some methods

} 

class History
{
    ArrayList<Drawings> prevDrawings;

    History()
    { 
        this.prevDrawings = new ArrayList<Drawings>();
    }

    void add(Drawings newDrawing) {}

}

现在,我说我有一个Drawings myDrawingHistory myHistory,我希望将myDrawing按值传递给myHistory。以下方式通过引用传递它:

myHistory.add(myDrawing);

我怎样才能通过值传递它?

1 个答案:

答案 0 :(得分:0)

Java中的所有内容,以及因此处理,都已经按值传递。没有任何内容通过引用传递。

如果没有意义,请阅读this,然后阅读this

您可能想要将Object的副本传递给方法。有多种方法可以做到这一点。假设您将此作为对象:

class MyObject{
   String thing1;
   double thing2;
   int thing3;
}

您可以在MyObject类之外创建一个复制方法:

public MyObject copy(MyObject original){
   MyObject copy = new MyObject();
   copy.thing1 = original.thing1;
   copy.thing2 = original.thing2;
   copy.thing3 = original.thing3;
}

您可以在MyObject类中创建一个复制方法:

class MyObject{
   String thing1;
   double thing2;
   int thing3;

   public MyObject copy(){
      MyObject copy = new MyObject();
      copy.thing1 = this.thing1;
      copy.thing2 = this.thing2;
      copy.thing3 = this.thing3;
   }

}

或者您可以创建一个复制构造函数:

class MyObject{
   String thing1;
   double thing2;
   int thing3;

   public MyObject(MyObject copy){
      this.thing1 = copy.thing1;
      this.thing2 = copy.thing2;
      this.thing3 = copy.thing3;
   }
}

您也可以使用序列化,但这有点超出正常处理范围。