java中输入语句不执行_Java输入if语句为false

我遇到了这个程序中最奇怪的错误,在调试它时会得到确认.我有以下代码(当然要归结为突出问题):

BHFrame.java

public class BHFrame

{

private boolean uSS;

private StateSaver stateSaver;

public BHFrame(boolean useInternalStateSaver)

{

//Init code

uSS = useInternalStateSaver;

//More init code

System.out.println(uSS);

if (uSS)

{System.out.println("Entered 1");

stateSaver = new StateSaver(title, false);

stateSaver.addSaveable(getThis());

}

//More init code

System.out.println(uSS);

if (uSS)

{System.out.println("Entered 2");

try

{

stateSaver.loadState();

stateSaver.putState(getThis());

}

catch (IOException ex)

{

alertUserOfException(ex);

}

}

}

}

GUI.java

public class GUI extends BHFrame

{

public GUI(boolean useInternalStateSaver)

{

super(useInternalStateSaver);

}

}

Main.java

public class Main

{

public static void main(String[] args)

{

GUI gui = new GUI(false);

}

}

产量

false

false

Entered 2

Exception in thread "main" java.lang.NullPointerException

at bht.tools.comps.BHFrame.(BHFrame.java:26)

at bhms.GUI.(GUI.java:5)

at bhms.Main.main(Main.java:5)

类BHFrame是从调用此构造函数的子类扩展并运行的,但实际上不应该影响此行为.问题是,当false作为useInternalStateSaver传递给构造函数时,跳过第一个if(uSS),但输入第二个if.在调试时,我发现uSS在整个运行时都是错误的,包括在第二个if语句的行上,这里.当条件返回false时,为什么Java会输入if语句?在你提问之前,我确实删除了.class文件并重新编译它以防万一有一些残留代码弄乱它,但我得到了相同的结果.请放心,此处显示对uSS变量的所有引用.

事实证明,这似乎是NetBeans 7.1 Build 201109252201中的一个错误,其中IDE未正确地将新代码插入到已编译的.class文件中.通过外部编译文件解决了这个问题.已提交bug report.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值