gpt4 book ai didi

Java 断言讨厌的副作用 - 编译器错误?

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:16 25 4
gpt4 key购买 nike

这个

public class test 
{
public static void main(String[] args)
{
Object o = null;
assert o != null;
if(o != null)
System.out.println("o != null");
}
}

打印出“o != null”; 1.5_22 和 1.6_18。编译器错误?注释掉断言修复它。当禁用断言时,字节码似乎直接跳转到打印语句:

 public static main(String[]) : void
L0
LINENUMBER 5 L0
ACONST_NULL
ASTORE 1
L1
LINENUMBER 6 L1
GETSTATIC test.$assertionsDisabled : boolean
IFNE L2
ALOAD 1: o
IFNONNULL L2
NEW AssertionError
DUP
INVOKESPECIAL AssertionError.<init>() : void
ATHROW
L2
LINENUMBER 8 L2
GETSTATIC System.out : PrintStream
LDC "o != null"
INVOKEVIRTUAL PrintStream.println(String) : void
L3
LINENUMBER 9 L3
RETURN
L4

最佳答案

我不知道“讨厌”。你能举一个真实的例子来说明这会咬你吗?你的例子看起来很做作。

编辑 - 出于好奇,我输入了程序,编译并使用 java 1.6.0_16 运行它。对我来说没有明显的编译器错误:

  • 启用断言 (java -ea test) 我得到一个断言错误。
  • 禁用断言(java 测试)后,我没有输出。

关于Java 断言讨厌的副作用 - 编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2280017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com