我是 Android 开发人员,一直致力于一些实现设计。这是我的基本设计:
Class x extends a{
y obj = new y();
y obj2 = new y()
}
Class y extends a{
z obj3 = new z();
}
我需要什么:在obj1中需要到达obj2的obj3'函数(setChecked)
我所做的尝试: 解决方案尝试 1-) 类 y 扩展 x 而不是 a,但是当我尝试到达 obj2 时,它是不同的对象,其中 x 对象创建,因此 y 对象是不同的! 解决方案尝试 2-) 尝试使用单例模式,因为它只是创建一个对象。但正如你所知,它应该是静态的。但在android中,activity变量不应该静态创建,而应该动态改变。
引用:
a : BaseAdapter
z : ToogleButton
我正在尝试:在android中,我确实实现了导航栏。 Listview 对象有两个子 ListView 对象,我使用了具有较低 api 支持的解决方案。在第一个子 ListView 对象的 Tooglebutton 状态发生更改时,它应该更改子第二个 ListView 对象的 Tooglebutton。
最佳答案
快速提示:出于可读性目的,类名最好以大写字母开头,并使其长度略长于 1 个字符,即使是为了示例目的也是如此。
您通常不想从另一个对象访问一个对象的私有(private)字段 - 这会破坏封装并使您很难以任何方式更改该字段,因为您无法真正知道谁在引用它。
您需要做的是在 y
类上提供一个访问器方法,该方法为您调用 obj3
上的相关方法。这有效地封装了 y
类行为背后的 obj3
字段。
示例:
Class MyClassX extends SomeClassA {
private final MyClassY obj = new MyClassY();
private final MyClassY obj2 = new MyClassY()
public final void doSomeComplexStuff() {
...
obj2.setChecked(true);
...
}
}
Class MyClassY extends SomeClassA {
private final MyClassZ obj3 = new MyClassZz();
public final void setChecked(final boolean checked) {
obj3.setChecked(checked);
}
}
因此,当您调用 obj2.setChecked(true) 时,该调用将传递到 obj2 中包含的 MyClassZ 实例。
关于java - 使用不同对象访问同一类变量的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479068/