Qual è il modo migliore per condividere i dati tra classi separate in Java? Ho un sacco di variabili che vengono utilizzate da classi diverse in file separati in modi diversi. Vorrei cercare di illustrare una versione semplificata del mio problema:Come condividere i dati tra classi separate in Java
Questo era il mio codice prima:
public class Top_Level_Class(){
int x, y;
// gets user input which changes x, y;
public void main(){
int p, q, r, s;
// compute p, q, r, s
doA(p,q,r);
doB(q,r,s);
}
public void doA(int p, int q, int r){
// do something that requires x,y and p, q, r
}
public void doB(int q, int r, int s){
// does something else that requires x, y and q, r, s
}
}
ora sembra qualcosa di simile:
public class Top_Level_Class(){
int x, y;
SomeClass1a a = new SomeClass1a();
SomeClass1a b = new SomeClass1b();
// gets user input which changes x, y;
public void main(){
int p, q, r, s;
// compute p, q, r, s
a.doA(p,q,r);
b.doB(q,r,s);
}
public class SomeClass1a() { // in its own separate file
public void doA(int p, int q, int r){
// do something that requires x,y and p, q, r
}
}
public class SomeClass1b() { // in its own separate file
public void doB(int q, int r, int s){
// does something else that requires x, y and q, r, s
}
}
Quindi, comunque, dovrei passare xey ogni volta (dove x, y sono le variabili memorizzate nel func della classe helper)?
a.set(x,y);
a.doA(p,q,r);
La mia idea era di avere una classe contenitore speciale dove x e y sono trattenuti. La classe di primo livello dovrebbe avere un'istanza della classe contenitore e cambiare x, y utilizzando i metodi impostati.
// in the top level class:
Container c = new Container(x,y);
a.setContainer(c);
b.setContainer(c);
Le mie classi di helper avrebbero anche un'istanza del contenitore e farebbero riferimento alla stessa istanza del livello principale. In questo modo accedono alla stessa x, y del livello principale.
desidero sapere se devo
- Utilizzare la classe contenitore
- , y ogni volta carico x nelle sottoclassi
- ?? Qualche metodo migliore ??
La risposta qui è, purtroppo, "dipende". programmers.se potrebbe essere un obiettivo più fertile per questa domanda. – bmargulies
Se la classe interna non è statica, può accedere anche ai membri della classe padre ... – Vojta
Non è una classe interna se si trova in un file diverso. E non è una sottoclasse se non estende la superclasse. – Armand