Мне просто интересно, следует ли нам делать obj = null
после добавления его в массив. Обратите внимание, что речь идет о специальном случае, читаемом ниже.Должен ли я делать obj = null после arraylist.add (obj)
Во-первых, давайте рассмотрим класс A
так:
public class A {
public void doSomething(B object) {
// some code here
}
}
и класс B
так:
public class B {
private final A a;
public B(A a) {
this.a = a;
}
public void aMethod() {
// Does something here
a.doSomething(this);
}
}
До сих пор все в порядке. Объект типа B
может вызвать метод A
doSomething()
для редактирования объекта на основе некоторых данных.
Теперь рассмотрим следующую ситуацию: doSomething()
добавляет объект B к архаисту. Теперь, который, если эти коды следует использовать:
public void doSomething(B b) {
arrayList.add(b);
b = null;
}
// or
public void doSomething(B b) {
arrayList.add(b);
}
В первом doSomething()
мы устанавливаем объект в нуль, что означает, что метод вызывающий становится нулевым. Ну, это нормально, так как doSomething()
звонок - последнее заявление, которое мне нужно в моем aMethod()
. Но хорошо ли это сделать?
Нет, вызывающий метод не становится нулевым. Java передается по значению. – markspace
, вы должны прочитать о [Закон Деметры] (http://en.wikipedia.org/wiki/Law_of_Demeter). –
Я в замешательстве, что вы пытаетесь выполнить, установив 'b = null;'? Нет никакого случая, когда это имеет смысл сделать это, но если вы объясните, почему вы думаете, что это хорошая идея или что вы думаете, что это так, то я или другой может помочь вам узнать, почему это в основном ничего не делает в великой схеме вещей. –