Java 其他人知道这意味着什么吗?
可以在源文件Java 其他人知道这意味着什么吗?,java,Java,可以在源文件java.util.TaskQueue.java引用中看到: 了解断言机制是如何工作的,了解断言语句如何影响性能是很有用的。当编译器在类中找到断言时,它会将生成的名为$assertionsDisabled的静态最终字段添加到类中。该字段未赋值(这是法定字节码)。断言本身被编译成以下形式的语句: 由于java标识符可以包含拉丁字母、$、和从字母开始的数字,其中$和u是一种字母$assertionsDisabled是类型boolean的有效java标识符 java/util/TaskQu
java.util.TaskQueue.java
引用中看到:
了解断言机制是如何工作的,了解断言语句如何影响性能是很有用的。当编译器在类中找到断言时,它会将生成的名为$assertionsDisabled
的静态最终字段添加到类中。该字段未赋值(这是法定字节码)。断言本身被编译成以下形式的语句:
由于java标识符可以包含拉丁字母、$、和从字母开始的数字,其中$和u是一种字母
$assertionsDisabled
是类型boolean
的有效java标识符
java/util/TaskQueue.desiredAssertionStatus()
似乎不是有效的表达式。可能它应该看起来像java.util.TaskQueue.desiredAssertionStatus()
。在这种情况下,它是从类TaskQueue
调用静态方法desiredAssertionStatus()
此方法返回布尔结果。代码>反转结果
唯一的问题是它到底是什么?由于这里出现了明显的语法错误(/
而不是
),我假设这一行是java代码反编译或“错误”编码尝试的结果。我说得对吗
我刚刚检查了java.util.TaskQueue.java
的源代码。它不包含这样的行。所以,我很确定现在你从反编译中得到了它。如果找不到所有类的源代码,您是否有IDE插件可以对其进行反编译?这是因为这个类有一个断言,然后编译器为自己创建这个变量。那么问题是什么?它是一个布尔变量,设置为desiredAssertionStatus()
方法的反向返回值。显然,java/util/TaskQueue
部分不是有效的java源代码。完美答案(+1)。但我相信这不是河间所问的。我相信他只是不明白这句话的语法含义。@HeJian,将JDK源代码连接到您的JDK。JDK源代码位于JDK安装目录下的文件src.zip
static final boolean $assertionsDisabled = !java/util/TaskQueue.desiredAssertionStatus();
if ($assertionsDisabled)
if (!boolean_expression)
throw new AssertionError(String_expression);