是否有办法在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
}