我有点麻烦这样在java中工作:
public class ClassA {
public static ClassB PointerToB;
public static ClassC PointerToC;
public ClassA() {
PointerToB = new ClassB();
PointerToC = new ClassC();
PointerToB.doSthB();
}
}
public class ClassB {
public void doSthB() {
ClassA.PointerToC.doSthC();
}
}
public class ClassC {
public void doSthC() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
说我有这些课程,我的"主"班("A")有几个成员.这些指向其他对象("B","C")的指针是静态的,因此"B"中的代码可以访问"C"中的(非静态)方法.
我知道静态方法只能访问其他静态方法和/或变量,但由于对这些类的引用是静态的 - 而不是实际的类本身 - 它应该以这种方式工作 - 不应该吗?
我有点卡在这里,因为这种访问一直崩溃我的应用程序:(
我需要ClassB来访问ClassC中的(非静态)方法,而不传递对A或C的所有引用.我该怎么做呢?
好了,比你的构造为其他ClassA变为畸形(你缺少括号),该代码编译 ......但要等到构建的一个实例ClassA,都PointerToB和PointerToC将为空.如果您只想初始化它们一次,请在静态初始化程序中执行 - 例如使用声明:
public static ClassB PointerToB = new ClassB();
public static ClassC PointerToC = new ClassC();
Run Code Online (Sandbox Code Playgroud)
即便如此,这里有两个令人讨厌的设计(IMO):
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |