有没有办法在java中执行此操作?
如果变量是String
做一个操作,否则执行另一个操作。
例如,给定变量a
if a is a string
close program
else
continue program
我正在寻找检查变量是否为String
的代码。
答案 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 _ => ...
}