我可以对字符串类型的变量设置条件吗?



是否有办法在java中做到这一点?

如果变量是String,执行一项操作,否则执行另一项操作。

例如,给定变量a

if a is a string
    close program
else
    continue program

我正在寻找检查代码,看看变量是否为String

if (x instanceof String) {
   // do one thing
} else { 
   // do something else
}

或者像这样:

if ((x != null) && String.class.equals(x.getClass())) {
   // do one thing
} else { 
   // do something else
}
if (myvariable instanceof String) {
     // Yes! It's a string
}
if(x instanceof String) 
{
    //Close
}
else
{
   //Continue
}

规范的方法是使用instanceof。但是方法重载也可以使用:

public class IsString
{
    public IsString ()
    {
      System.out.println ("String: " + isString ("7"));
      Object o = "object";
      System.out.println ("Object: " + isString (o));
      System.out.println ("o instanceof String ?= " + (o instanceof String));
    }
    public boolean isString (String p)
    {
        return true;
    }
    public boolean isString (Object o)
    {
        return false;
    }
    public static void main (String args[])
    {
        new IsString ();
    }
}

但有一个区别:如果引用声明为Object,则不会检测到String,而instanceof会检测到它

instanceof操作符是在Java中测试给定对象是否为某种类型时使用的操作符。

if(x instanceof String) {
  String s = (String) x;
  // ...
} else {
  // ...
}
在OOP中不鼓励使用这种类型检查。您应该尝试通过使用子类型多态性(或者继承,如果您愿意的话)来解决问题。(如果你描述你的具体问题,我们可以帮助你。)

一个有趣的事实:Scala, JVM上的另一种静态类型语言,有以下结构,允许您在一个子句中匹配类型并转换为该类型:

x match {
  case s: String => ...
  case _ => ...
}

From JavaDoc

instanceof操作符将对象与指定类型进行比较。你可以用它来测试一个对象是否是一个类的实例类的实例,或实现特定类的实例接口。

像这样使用instanceOf

if (variable instanceof String) {
     //  It's a string
}

相关内容

  • 没有找到相关文章

最新更新