Java类静态成员的范围

达斯汀·孙(Dustin Sun):

我正在使用Java / JSP开发Web应用程序。一个类,例如Student,有一个静态成员static private int _nextID。

我想知道,所有用户会话中的_nextID是否相同?还是每个会话都有自己的_nextID?

安德索伊:

在简单的情况下,您可以假设的多个实例Student共享同一静态nextID字段。但是,应该超越简单的案例(或您没有的文档)进行思考。在这种情况下,除非idnextID计数器派生的实例字段传播到一个ID应该是唯一的更大的应用程序中,否则是没有问题的。在那种情况下,您需要一个更强大的ID生成器(也许您想要一个UUID;也许您想要数据库中的主键;也许其他的东西)。

仔细问自己,唯一ID的要求范围是什么。然后寻找解决该问题的解决方案并将其记录在班级中。

通常,同名类中的静态字段由不同的类加载器加载(在相同或不同的JVM中)可能是不同的实例,这是人们在尝试实现Singleton模式时最常注意到的因此,静态变量的范围取决于(在复杂情况下)相关的类加载器。有关classloader定义的Java名称空间的更多(最新)细节在此处此处

与SO相关:... 之间的差异Thread.getContextClassLoader()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章