为什么这段代码会进入我方法的错误块?

时间:2013-01-19 08:32:27

标签: java string null

我有一个查询我正在从同一个类

中的另一段代码调用这样的方法
String message = "null";
//In this case have too show the Yes/No button screen
return performManualVerification(transaction, patientId, scriptInfo, message);

如上所示,消息包含字符串null我将此传递给下面的方法但是在调试时我正在检查它是否为空检查块,它应该进入null检查块,它正在进行无电话块。请指教

private int performManualVerification(ITransaction transaction,
      String patientId, String scriptInfo, String message)
  {

    if (message.equalsIgnoreCase(null))
    {
      int UserResponse = messageBox.showMessage("patientinfoVerification",
          null, IMessageBox.YESNO);

      if (UserResponse == IMessageBox.YES) {
               Map<String, List<String>> ppvValidatedinfo = getValidatedPatientData(transaction, patientId, scriptInfo);
        if(ppvValidatedinfo.get(patientId) != null){

          return MANUALLY_VERIFIED; // manually verified
        }      

      } 
        return RETURN_SALE;   
    }


    messageBox.showMessage("Nophone", null, IMessageBox.OK);

    int UserResponse = messageBox.showMessage("patientinfoVerification",
        null, IMessageBox.YESNO);

    if (UserResponse == IMessageBox.YES) {

      Map<String, List<String>> ppvValidatedinfo = getValidatedPatientData(transaction, patientId, scriptInfo);
      if(ppvValidatedinfo.get(patientId) != null){

        return MANUALLY_VERIFIED; // manually verified
      }      

    } 
      return RETURN_SALE;   
  }

3 个答案:

答案 0 :(得分:2)

  

String message =“null”;

这是一个值为null的字符串。但你需要的是,

String message = null;

阅读What is null in Java?帖子,@polygenelubricants写的答案得到了很好的解释。

另外看看这个约束,如果消息为空,这将给你一个NullPointerException

 if (message.equalsIgnoreCase(null)) 

首先检查它是否为空。

if(message == null) {
   // do something.
} else {
   // Do something.
}

答案 1 :(得分:0)

要解决此问题,您应该使用带引号的“null”而不仅仅是null,它具有不同的含义。

  • “null”只是另一个Java`String。
  • null(不带引号)是一个文字,可以分配给对象引用,通常意味着它们不引用任何对象。

另一方面,如果你只想为引用分配一个空值,你应该使用空文字,而不是String,你可以这样比较:

    String s = null;
    if(s == null)

答案 2 :(得分:0)

我认为你应该在引号中使用null来获得预期的结果。