About this question
In school, I've been told many times to stop using public for my variables. I haven't asked why yet.
This question: Are Java's public fields just a tragic historical design flaw at this point? seems kinda related to this. However, they don't seem to discuss why it is "wrong", but instead focus on how they can use them instead.
Look at this (unfinished) class:
public class Reporte {
public String rutaOriginal;
public String rutaNueva;
public int bytes Originales;
public int bytesFinales;
public float ganancia;
/**
* Constructor para objetos de la clase Reporte
*/
public Reporte() {
}
}
No need to understand Spanish. All this class does is hold some statistics (those public fields) and then do some operations with them (later).
I will also need to be modifying those variables often. But well, since I've been told not to use public, this is what I ended up doing:
public class Reporte {
private String rutaOriginal;
private String rutaNueva;
private int bytes Originales;
private int bytesFinales;
private float ganancia;
/**
* Constructor para objetos de la clase Reporte
*/
public Reporte() {
}
public String getData Original() {
return rutaOriginal;
}
public String getRutaNueva() {
return rutaNueva;
}
public int getBytesOriginales() {
return bytes Originales;
}
public int getBytesFinales() {
return bytesFinales;
}
public float getGanancia() {
return ganancia;
}
public void setRutaOriginal(String rutaOriginal) {
this.rutaOriginal = rutaOriginal;
}
public void setRutaNueva(String rutaNueva) {
this.ruta Nueva = ruta Nueva;
}
public void setBytesOriginales(int bytesOriginales) {
this.bytes Originales = bytes Originales;
}
public void setBytesFinales(int bytesFinales) {
this.bytesFinales = bytesFinales;
}
public void setGanancia(float ganancia) {
this.ganancia = ganancia;
}
}
Looks kinda pretty. But it seems like a waste of time.
Google searches about "When to use public in Java" and "Why shouldn't I use public in Java" seem to discuss a concept of mutability, although I'm not really sure how to interpret such discussions. I do want my class to be mutable - all the time.