Alcune classi java devono avere proprietà private con un getter pubblico e un setter per funzionare correttamente. Ad esempio, i bean JSF e le entità JPA ne hanno bisogno. Se non fosse per quelle librerie, ci sono probabilmente alcune proprietà che non dovrebbero avere getter e sicuramente non setter. Anche i costruttori vuoti sono spesso scoraggiati per l'uso da codice personalizzato. Per esempioMetodo sconsigliato, non obsoleto
@Entity
public class MyEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
public MyEntity() {}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
}
In questa classe il metodo setId non deve mai essere chiamato da codice manuale. Tuttavia, il metodo non è deprecato, quindi un'annotazione @Deprecated sarebbe errata.
C'è un altro modo di @deprecated di raccontare un metodo non deve essere utilizzato?
Questa domanda non è correlata a JSF e JPA. Tuttavia, vale la pena menzionare queste strutture. –
Il tuo esempio non è molto buono. Perché dovresti mai scoraggiare l'uso del setter in questo caso? È un oggetto entità che può potenzialmente memorizzare tutti i tipi di combinazioni di dati, ovviamente si vuole essere in grado di impostarne i valori. – Perception
Non si desidera modificare il proprio identificativo univoco dopo averlo impostato su initialize. –