我想检查传入的字符串是哪种类型。
这样的事情:
public void checkType(String str)
{
if(str is Integer){
//do Integer stuff
}
if(str is Float){
//do Float stuff
}
if(str is Boolean){
//do Boolean stuff
}
if(str is Double){
//do Double stuff
}
}
更好的方法是什么?
答案 0 :(得分:0)
最后,我达成了解决方案。对于Integer和Float,我使用了Java Regular表达式。
像这样:
For Integer:
String intRegex = "[0-9]+";
if (inputString.matches(intRegex)) {
//do Integer stuff
}
For Float:
String floatRegex = "^([+-]?\\d*\\.?\\d*)$";
if (inputString.matches(floatRegex)) {
//do Float stuff
}
我认为这也是识别String是Integer还是Float类型的好方法......?
对于布尔的东西,我还没有找到好的解决方案。所以我只是使用了等于运算符。
谢谢...
答案 1 :(得分:-1)
对于您要做的事情,最好将方法参数声明为Object类型而不是String,例如:
public void checkType(Object var) {
// ..... Your code .....
}
唯一的问题是您需要知道为特定方法代码提供的对象类型。您可以使用一行代码完成此操作,例如:
public void checkType(Object var) {
String varType = var.getClass().getSimpleName().toUpperCase();
// ..... Your code .....
}
名为varType的声明的String变量将保存所提供的Object的名称。现在,您可以使用if / then或switch()方法确定实际提供的内容,例如:
public void checkType(Object var) {
String varType = var.getClass().getSimpleName().toUpperCase();
switch (varType) {
case "STRING":
// do String stuff
break;
case "INTEGER":
// do int stuff
break;
case "FLOAT":
// do float stuff
break;
case "DOUBLE":
// do double stuff
break;
case "BOOLEAN";
// do boolean stuff
break;
case "JLABEL":
// do JLabel stuff
// (any object can be supplied)
break;
}
}
我认为应该这样做(错误陷阱取决于你)。