java - 解释 synchronized() 内部的 Commons Lang 代码?
问题描述
我正在尝试从 JakartaCommons-lang 重写一段代码,因为我们有一个需要尽可能少的依赖项的包
static void unregister(Object value) {
Set registry = getRegistry();
if (registry != null) {
registry.remove(new IDKey(value));
synchronized(class$org$apache$commons$lang$builder$HashCodeBuilder == null ? (class$org$apache$commons$lang$builder$HashCodeBuilder = class$("org.apache.commons.lang.builder.HashCodeBuilder")) : class$org$apache$commons$lang$builder$HashCodeBuilder) {
registry = getRegistry();
if (registry != null && registry.isEmpty()) {
REGISTRY.set((Object)null);
}
}
}
}
有人能解释一下 synchronized() 里面的代码吗?特别是所有的'$'
解决方案
$
是一个有效的标识符字符,所以它只是名称的一部分。
请注意,$
不鼓励使用 of。Java 语言规范,第3.8 节。标识符说:
“Java 字母”包括大写和小写 ASCII 拉丁字母
A-Z
(\u0041-\u005a
) 和a-z
(\u0061-\u007a
),以及出于历史原因的 ASCII 美元符号 ($
, or\u0024
) 和下划线 (_
, or\u005f
)。美元符号应仅用于机械生成的源代码,或者很少用于访问遗留系统上预先存在的名称。下划线可以用在由两个或多个字符组成的标识符中,但由于是关键字,它不能用作一个字符的标识符。
如果它_
改为使用它对你来说会更易读吗?
synchronized (class_org_apache_commons_lang_builder_HashCodeBuilder == null ? (class_org_apache_commons_lang_builder_HashCodeBuilder = class_("org.apache.commons.lang.builder.HashCodeBuilder")) : class_org_apache_commons_lang_builder_HashCodeBuilder) {
...
}
或更短的名字?
synchronized (builderClass == null ? (builderClass = getClass("org.apache.commons.lang.builder.HashCodeBuilder")) : builderClass) {
...
}
推荐阅读
- swift - 了解 Vapor-Fluent 中的迁移(服务器端 Swift)
- c# - 绑定的 DataGridView 可以设置绑定到另一个源的 DGVComboCell 的显示值吗
- javascript - 将对象数组过滤到新数组中
- swift - 用于初始化已弃用变量的 Swift 警告
- python - 在 Keras 或 Tensorflow 中,如何在模型中输入不同的样本大小和成对连接嵌入?
- python - python 中的多个绘图会创建错误消息“无法重置轴”
- uwp - 如何处理错误“MDM 2009 Duplicate type found processing metadate file”?
- aws-amplify - 在设置 Amplify 项目时(通过 amplify init),为什么编辑器很重要?
- javascript - 循环一个javascript对象数组(在另一个对象内)
- java - 在 JasperSoft 7.1.1 设备中创建新的 PostgreSQL 数据源时出现问题