public abstract class Class1 {
protected static Object object1 = null;
protected static Object object2 = null;
public static Object[] objects = { object1, object2 };
public static void main(String[] args) {
new Class2();
for (Object o : objects) {
System.out.println(o);
}
}
}
public class Class2 extends Class1 {
public Class2() {
Class1.object1 = new String("String 1");
Class1.object2 = new String("String 2");
}
}
Воспроизводит:ссылки на массив Java являются недействительными после того, как установлено
null
null
Почему?
Когда я создаю новый экземпляр Class2
, конструктор этого класса инициализирует object1
и object2
.
objects
, насколько мне известно, содержит ссылки на эти объекты. Поэтому после их инициализации я ожидал ничего, кроме нулевого.
Может ли кто-нибудь объяснить? Благодарю.
'int x = 3; int y = x; x = 5; 'y все равно 3. –
@SotiriosDelimanolis * Слегка * не согласен с дубликатом, поскольку ссылка касается параметров функции, и даже если это та же идея, было бы сложно, чтобы ОП здесь совершил этот прыжок. –
Если вы этого не обнаружили раньше, прочитайте [this] (http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value). –