告诉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类型。