¿Cuál es la mejor forma de compartir datos entre clases separadas en Java? Tengo un conjunto de variables que son usadas por diferentes clases en archivos separados de diferentes maneras. Voy a tratar de ilustrar una versión simplificada de mi problema:Cómo compartir datos entre clases separadas en Java
Esta fue mi código antes:
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
}
}
Ahora se ve algo como esto:
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
}
}
Así que de todos modos, debería pasar xey cada vez (donde x, y son variables almacenadas en el func de la clase auxiliar)?
a.set(x,y);
a.doA(p,q,r);
Mi idea era tener una clase de contenedor especial donde se mantienen xy y. La clase de nivel superior tendría una instancia de la clase contenedora y cambiaría x, y utilizando los métodos establecidos.
// in the top level class:
Container c = new Container(x,y);
a.setContainer(c);
b.setContainer(c);
Mis clases de ayuda también tendrían una instancia del contenedor y que apuntarían a la misma instancia que en el nivel superior. De esta forma, acceden a la misma x, y que en el nivel superior.
me gustaría saber si debo
- Utilice la clase de contenedor de carga
- x, y cada vez en las subclases
- ?? ¿Algún método mejor?
La respuesta aquí es, lamentablemente, 'depende'. programadores.se podría ser un objetivo más fértil para esta pregunta. – bmargulies
Si la clase interna no es estática, puede acceder a los miembros de la clase principal también ... – Vojta
No es una clase interna si está en un archivo diferente. Y no es una subclase si no extiende la superclase. – Armand