Я должен решить, являются ли следующие два объекта неизменяемыми. Я искал определение, в котором говорится: «Объект считается неизменным, если его состояние не может измениться после его построения».Являются ли объекты неизменяемыми?
public class Car {
private int spareTires = 1;
private String model = "Volkswagen";
private Person driver = new Person();
public double engineSize = 2.0;
public int getSpareTires() { return spareTires; }
public String getModel() { return model; }
public Person getDriver() { return driver; }
}
public class Person {
private String name = "James";
public void setName(String s) { name = s; }
public String getName() { return name; }
}
Person
не является неизменным, поскольку он имеет метод мутатор (setName()
).
Однако я не уверен насчет Car
. Car
не имеет методов мутаторов, но согласно https://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html поля должны быть объявлены окончательными и статическими, что не так. Также я считаю, что можно изменить состояние через public double engineSize = 2.0;
?
Вы можете мутировать общедоступные поля экземпляра, да –
И вам нужно только установить окончательное значение как неизменяемое, а не статическое –
Вопросы и ответы на Stack Exchange следуют стандартным синтаксисом форума-сообщения. HTML не нужно. – Gendarme