我想在同一类的各种对象实例之间共享一个对象.
从概念上讲,当我的程序运行时,A类的所有对象都访问B类的同一对象.
我已经看到这static是系统范围的,并且不鼓励使用它.这是否意味着如果我在实例化A类对象的同一JVM上运行另一个程序,这些对象可能会访问与前一个程序中访问的对象相同的B对象?
使用静态字段的缺点一般是什么?
有没有其他选择(不需要大量的实施)?
Jon*_*eet 67
静态并不意味着"由所有实例共享" - 它意味着"根本不与特定实例相关".换句话说,您可以在A类的静态字段中获取,而无需创建任何实例.
至于在同一个JVM中运行两个程序 - 它实际上取决于"运行两个程序"的确切含义.静态字段与类对象有效关联,而类对象又与类加载器相关联.因此,如果这两个程序使用单独的类加载器实例,那么您将拥有两个独立的静态变量.如果他们都使用相同的类加载器,那么只有一个,所以他们会看到彼此的变化.
至于替代方案 - 有各种选择.一种方法是将对"共享"对象的引用传递给您创建的每个需要它的对象的构造函数.然后它需要存储该引用以供日后使用.这可能有点痛苦,并且比静态方法吸收更多内存,但它确实易于测试.
| 归档时间: |
|
| 查看次数: |
55641 次 |
| 最近记录: |