Chr*_*zmo 7 java reference object
我有一个java应用程序在基类中创建两个静态对象,这些对象需要在程序的各个类中引用.
public class Baseclass{
public static ClassA A = new ClassA();
public static ClassB B = new Classb();
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
这些对象在其他类中被引用为本地私有变量.
public class ClassA{
private ClassB b = Baseclass.B;
Run Code Online (Sandbox Code Playgroud)
但是,两个对象都需要彼此运行,如果在创建另一个对象之前创建其中一个对象的新实例,则"upper"类中的局部变量将设置为null.Java中是否存在将对象的实际对象(如指针)作为变量引用而不是制作对象副本的概念?
我认为你要找的答案是"单身模式".这是您只创建一个类的一个实例以便在其他地方使用的地方.这是一个很好的阅读链接.这是维基百科页面上的一些java示例.
所以你的代码看起来像这样:
public class A {
private final static A instance = new A();
/* private constructor forces you to use the getInstance() method below */
private A() {}
public static A getInstance() {
return instance;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,无论您想要获得A的实例,您都可以执行以下操作:
public class B {
private final A classA = ClassA.getInstance();
...
}
Run Code Online (Sandbox Code Playgroud)
没有理由A不能在自己的方法中拥有B和调用B方法的实例.你不能用这个交叉依赖关系来调用构造函数中的任何其他方法.
顺便提一下,顺便说一句,这些模式应该谨慎使用.实现此目的的更好方法是通过依赖注入而不是全局引用.交叉注射是可能的,但同样应该谨慎使用.更好的解决方案是重构类以具有线性依赖性.
Java中是否存在将对象的实际对象(如指针)作为变量引用而不是制作对象副本的概念?
Java是按值传递的,但任何Object的值都是对象的引用(类似于C中的指针,尽管它们不是内存地址).因此,如果您有一个实例A并将其分配给另一个字段,那么该字段将是相同的值,并将引用相同的实例A.
// instantiate a new instance of A
A a1 = new A();
// assign the reference to A to another variable
a2 = a1;
// they are equivalent and both reference the same object
if (a1 == a2) ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17300 次 |
| 最近记录: |