java class 中变量的私有与默认范围 - 任何性能问题
private vs default scope for variables in java class - any performance issues
针对上述问题,我查阅了很多文章。
我能收集到的主要要点:
1.) 设为私有我们的意思是只有 声明 class 可以访问 .
2.) 除此 class 之外没有其他人可以访问这些变量。
大多数情况下,在创建 class 时,我们将变量范围保持为默认值,也许只是因为懒惰写额外的词 "private"。我们只保留默认范围的字段。
我想了解开发人员的这种疏忽到底是如何导致问题的,也许
1.) 性能问题
2.) 垃圾回收
3.) 编译时-运行时加载
...或任何其他参数。
Private 与 Public/etc 声明由 java 解释器和编译器处理相同。它们只是我们用来保持代码模块化的约定,但在内存中的处理方式完全相同 space.
懒得写 private
关键字的开发人员将字段打开,以便由同一包中其他 类 中的代码直接修改。
直接从知道如何正确处理字段的代码外部修改字段很麻烦,并且可能导致无意的错误。
通常应声明字段 private
,以防止对值进行不受控制的操作。当然,这样的规则总是有例外,但是所有开发人员都应该写 private
想都没想,改成别的东西应该需要仔细考虑。
没有性能影响。纯粹是为了防止编码错误。
我认为这对性能没有任何影响。对代码结构会有一定的影响,如果没有强烈的动机,不建议使用过多的默认变量。
从垃圾收集和class加载的角度来看,它们是根据需要完成的。如果 JVM 认为需要该对象,那么它可能会保留在内存中。虽然默认访问对垃圾回收没有直接影响,但编程错误的可能性很高,可能导致内存泄漏。
涉及到封装、耦合、扩展开放修改关闭的原则。
例如 - 如果我正在编写一个库 class 并且有一个具有 public\ default
访问权限的 field
。现在,一旦我发布了我的库并且我的库的客户开始使用它 - 我无法返回并更改客户端代码可以访问的 field
因为无法确定 - 它没有被使用或更改它不会破坏客户代码。
所以,我只能选择以同样的方式支持它。如果这是私有的并且我使用了 getter 和 setter - 我总是可以在未来的版本中做/添加一些额外的东西。
针对上述问题,我查阅了很多文章。
我能收集到的主要要点:
1.) 设为私有我们的意思是只有 声明 class 可以访问 .
2.) 除此 class 之外没有其他人可以访问这些变量。
大多数情况下,在创建 class 时,我们将变量范围保持为默认值,也许只是因为懒惰写额外的词 "private"。我们只保留默认范围的字段。
我想了解开发人员的这种疏忽到底是如何导致问题的,也许
1.) 性能问题
2.) 垃圾回收
3.) 编译时-运行时加载
...或任何其他参数。
Private 与 Public/etc 声明由 java 解释器和编译器处理相同。它们只是我们用来保持代码模块化的约定,但在内存中的处理方式完全相同 space.
懒得写 private
关键字的开发人员将字段打开,以便由同一包中其他 类 中的代码直接修改。
直接从知道如何正确处理字段的代码外部修改字段很麻烦,并且可能导致无意的错误。
通常应声明字段 private
,以防止对值进行不受控制的操作。当然,这样的规则总是有例外,但是所有开发人员都应该写 private
想都没想,改成别的东西应该需要仔细考虑。
没有性能影响。纯粹是为了防止编码错误。
我认为这对性能没有任何影响。对代码结构会有一定的影响,如果没有强烈的动机,不建议使用过多的默认变量。
从垃圾收集和class加载的角度来看,它们是根据需要完成的。如果 JVM 认为需要该对象,那么它可能会保留在内存中。虽然默认访问对垃圾回收没有直接影响,但编程错误的可能性很高,可能导致内存泄漏。
涉及到封装、耦合、扩展开放修改关闭的原则。
例如 - 如果我正在编写一个库 class 并且有一个具有 public\ default
访问权限的 field
。现在,一旦我发布了我的库并且我的库的客户开始使用它 - 我无法返回并更改客户端代码可以访问的 field
因为无法确定 - 它没有被使用或更改它不会破坏客户代码。
所以,我只能选择以同样的方式支持它。如果这是私有的并且我使用了 getter 和 setter - 我总是可以在未来的版本中做/添加一些额外的东西。