Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
告诉Java使用if/else部分识别类型_Java - Fatal编程技术网

告诉Java使用if/else部分识别类型

告诉Java使用if/else部分识别类型,java,Java,我有这段代码: var v = this.rhs; if(this.rhs instanceof String){ v = ((String)v).replace("'","''"); // escape single-quotes } else{ v = v.toString(); } if(v.contains(" ")){ v = String.join("","'",v,"'"); } Java抱怨说: 不能推断它一定是一个字符

我有这段代码:

  var v = this.rhs;

  if(this.rhs instanceof String){
    v = ((String)v).replace("'","''");  // escape single-quotes
  }
  else{
    v = v.toString();
  }

  if(v.contains(" ")){
    v = String.join("","'",v,"'");
  }
Java抱怨说:

不能推断它一定是一个字符串。尽管像TypeScript这样的类型系统可以推断出这一点。我使用的是Java版本10。有没有办法告诉Java v必须是String类型

有没有办法告诉Java v必须是String类型

是,将其声明为字符串:

String v = "";
在每个条件块中,v被设置为字符串的值。因为它总是一个字符串,就像你说的,它一定是一个字符串,那么首先就把它变成一个字符串

将v设置为this.rhs似乎没有任何值。只需在条件块中直接使用this.rhs:

v = ((String)this.rhs).replace("'","''");
//...
v = this.rhs.toString();

Java什么时候开始有var关键字了?Java版本10引入了var关键字My Q。在什么情况下v不是字符串*您已经在if-else的第一个子句中通过强制转换实现了它。为什么在else子句中不这样做呢?有一种方法:强制转换,您可以在代码中使用它。但是if的else分支显示,v不能是String类型,而是Object类型。