Java'da ayrı sınıflar arasında veri paylaşmanın en iyi yolu nedir? Farklı sınıflar tarafından farklı dosyalarda farklı şekillerde kullanılan bir dizi değişkenim var. benim sorunun basitleştirilmiş bir sürümünü göstermek için çalışalım:Java'da ayrı sınıflar arasında veri nasıl paylaşılır
Bu önce benim kod: Ben geçmelidir, Neyse
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
}
}
:
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
}
}
Şimdi şuna benzer x ve y her seferinde (x, y, helpc sınıfı func'de saklanan değişkenlerdir)?
a.set(x,y);
a.doA(p,q,r);
Fikrim, x ve y'nin tutulduğu özel bir kapsayıcı sınıfına sahip olmaktı. Üst düzey sınıf, kap sınıfının bir örneğine sahip olacak ve set yöntemlerini kullanarak x, y değerini değiştirecektir.
// in the top level class:
Container c = new Container(x,y);
a.setContainer(c);
b.setContainer(c);
My yardımcı sınıflar da kabın bir örneğini olurdu ve üst düzeyde aynı örneğine işaret olacaktır. Bu şekilde, aynı x, y'ye üst seviyedeki gibi erişirler.
I
- alt sınıfları
- içine kap sınıf
- Yük x, y, her zaman kullanım gerekir bilmek isteyen ?? Bazı daha iyi bir yöntem?
Buradaki cevap, ne yazık ki, 'bağlıdır'. programmers.se bu soru için daha verimli bir hedef olabilir. – bmargulies
İç sınıf statik değilse, ana sınıf üyelerine de erişebilir ... – Vojta
Farklı bir dosyada bulunuyorsa, bu bir iç sınıf değil. Ve eğer süper sınıfı genişletmezse, bir alt sınıf değildir. – Armand