我可以对String类型的变量进行条件化吗?

时间:2011-08-01 01:49:36

标签: java reflection

有没有办法在java中执行此操作?

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

例如,给定变量a

if a is a string
    close program
else
    continue program

我正在寻找检查变量是否为String的代码。

6 个答案:

答案 0 :(得分:4)

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
}

答案 1 :(得分:1)

if (myvariable instanceof String) {
     // Yes! It's a string
}

答案 2 :(得分:1)

if(x instanceof String) 
{
    //Close
}
else
{
   //Continue
}

答案 3 :(得分:1)

规范的方法是,使用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会检测到它。

答案 4 :(得分:0)

来自JavaDoc

  

instanceof运算符将对象与指定类型进行比较。您   可以使用它来测试对象是否是类的实例,实例   子类的实现,或实现特定的类的实例   接口

像这样使用instanceOf,

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

答案 5 :(得分:0)

当您想要测试给定对象是否属于某种类型时,

instanceof运算符就是您在Java中使用的运算符。

if(x instanceof String) {
  String s = (String) x;
  // ...
} else {
  // ...
}

在OOP中不鼓励使用此类型检查。您应该尝试通过使用子类型多态(或继承,如果您愿意)来解决您的问题。 (如果您描述了您的具体问题,我们可以帮您解决。)


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

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