Рекомендуется использовать модификаторы общедоступного доступа для полей данных в конечном (неизменяемом) классе java, даже если поля данных не являются ссылками на изменяемый тип данных. Или мы будем обращаться к полям данных непосредственно, поскольку поля данных должны быть определены в самом конструкторе, поэтому свести на нет все шансы изменить внутреннее представление класса. Пожалуйста, предложите?Модификаторы доступа в Java при использовании с неизменяемым классом
Например:
public class MainApp {
public static void main(String args[]) {
Immutablesample immutablesample = Immutablesample.getInstance("akkhil");
System.out.println(" Before modification " + immutablesample.getName());
immutablesample.name = "gupta";
System.out.println(" After modification " + immutablesample.getName());
}
}
является вызывающий код пытается изменить поле данных путем доступа к нему напрямую (без модификатора доступа) для следующего класса:
public final class Immutablesample {
private final String name;
private Immutablesample(String name){
this.name = name;
}
public String getName(){
return name;
}
public static Immutablesample getInstance(String name){
return new Immutablesample(name);
}
}
Как бы это сделать класс, подверженный изменению внутреннего представления, если я изменяю модификатор от частного к публичному private String name; к публичному имени строки; , поскольку объект создавал с параметризованным конструктором, поэтому имеет неизменяемые поля данных, чем нужно, чтобы частные поля данных были приватными?
Можете ли вы разместить пример или два? Ваш недостаток в использовании пунктуации и правильной терминологии затрудняет понимание вопроса. –
вы можете найти здесь все подробности: https://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html – grsdev7
Нет. Поля данных всегда должны быть закрытыми и окончательными. Предоставляйте только геттеры (которые могут возвращать защитные копии изменяемых экземпляров, если необходимо) – TheLostMind