Ссылка на объект Java / определяет объем вопроса

Конвертируйте свою cDate в Java Date, а затем в String.
Заменить cDate в запросе на:

dateFormatter.format(cDate.toJavaDate())
8
задан Click Upvote 8 March 2009 в 03:35
поделиться

2 ответа

Да, изменения в свойствах сохраняются. Java является 100%-й передачей значением, однако при передаче объекта "значение" передало, действительно указатель на объект. Таким образом при изменении объекта в методе Вы изменяетесь, фактический объект передал в.

Таким образом, если у Вас будет следующий метод, то затем вызывающий метод будет видеть изменения:

private void updateMyDot(final Dot aDot) {
  aDot.dotColor = new Color(255,255,255);
}

но если Вы сделаете следующее, то затем вызывающий метод не будет видеть изменений.

private void updateMyDot(/* not final */ Dot aDot) {
  aDot = new Dot();
  aDot.dotColor = new Color(255,255,255);
}

Во втором примере вызывающая сторона не будет видеть изменений и не будет видеть недавно созданный Dot объект.

12
ответ дан 5 December 2019 в 12:13
поделиться

Мимо объектов проходят [ссылочное значение, где значение является ссылкой] (вещи, которые наследовались Объекту), примитивные значения (интервал, долго, дважды, и т.д.) передаются значением.

Это означает, что, когда примитив передается от вызывающей стороны методу, он копируется, тогда как с объектом [значение] ссылка передается.

Который в свою очередь означает, что, когда объект видоизменен методом, вызывающая сторона видит те изменения, потому что он имеет ссылку на тот же объект.

С другой стороны, когда метод видоизменяет примитив, вызывающая сторона не видит изменений, поскольку метод работает над копией.

[причина редактирований]

Если бы Java имел передачу ссылкой затем, то Вы могли бы сделать это:

Object x;

x = new Integer(42);
foo(x);
System.out.println(x.getClass()); // pass by reference would have it print out java.lang.Float

где нечто определяется как:

void foo(Object o)
{
   o = new Float(43);
}

Так как Java передает ссылку значением o = new Float(43); позволяется - но значение в вызывающей стороне останется как new Integer(42);

2
ответ дан 5 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: