加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java输入if语句为false

发布时间:2020-12-15 03:10:02 所属栏目:Java 来源:网络整理
导读:我遇到了这个程序中最奇怪的错误,在调试它时会得到确认.我有以下代码(当然要归结为突出问题): BHFrame.java public class BHFrame{ private boolean uSS; private StateSaver stateSaver; public BHFrame(boolean useInternalStateSaver) { //Init code uSS
我遇到了这个程序中最奇怪的错误,在调试它时会得到确认.我有以下代码(当然要归结为突出问题):

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.<init>(BHFrame.java:26)
    at bhms.GUI.<init>(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.

解决方法

无论是什么抛出该异常都可能不在您发布的代码中.

它没有被catch语句捕获,它只捕获IOException.

这是一个NullPointerException,可以在任何地方发生.

您没有显示if块中的代码实际执行的迹象.在屏幕截图中,绝对知道如何输入if块.没有日志记录.

在各个点添加调试消息以准确查看发生的情况.或者,你知道,看看第26行(在你发布的代码之前的wayyyyy),看看为什么你会得到一个NullPointerException.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读