У меня есть активность с ArrayList, а также я увеличил вид, активность и просмотр в разделенных классах.ArrayList динамически меняется?
public class activity extends Activity{
private ArrayList<customObject> ar = new ArrayList<customObject>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawview = new DrawView(this,ar);
setContentView(drawview);//more code
}}
Как вы видите, я перейти к конструктору draview ArrayList моей деятельности, так что я могу обрабатывать объекты ArrayList has.i дали те же имена ArrayList в обоих классах. (Если это имеет значение .. .)
class DrawView extends View {
private ArrayList<customObject> ar;
public DrawView(Context context,ArrayList<customObject> a) {
super(context);
this.ar=a;
}
//more code
}
И теперь очень очень очень странные вещи .... насколько я знаю, Java является вызов по значению, поэтому я не могу на самом деле проходят сегменты памяти о том, где я храню ArrayList ... поэтому единственными значениями, которые может видеть drawview, являются те, которые я передал конструктору .... НО, когда я добавляю значения в ArrayList Activity, значения также являются ainaylist представления !!!! Может ли это происходить? Почему это происходит ... Я очень смущен ...
приведенный выше код работает также с массивом, поэтому я догадываюсь, что и массив передан с ссылкой .... правильно? – stelios
Да. Ваша переменная 'ar' ссылается (указывает на) массив. 'Ar' был передан конструктору' DrawView'. Переменная 'ar' была передана по значению, поэтому значение' ar' (адрес памяти массива) было скопировано в параметр конструктора 'a'. Итак, теперь 'ar' и' a' указывают на один и тот же массив, то есть эффективно передают массив по ссылке. –
спасибо !!!! Теперь я понимаю ... вы были очень полезны !!! – stelios