如果我尝试使用错误的类的instanceof运算符我得到一个编译错误("动物不能转换为字符串"),但有一个接口,我没有得到编译时错误.
例如:在第10行,我收到编译错误,因为Animal不是String的子类.但是在第14行中,即使Animal没有实现List接口,我也没有收到编译错误.
class Animal {
}
public class InstanceOf {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Animal a = new Animal();
if (a instanceof String ){ //line 10
System.out.println("True");
}
if (a instanceof List ){ //line 14
System.out.println("True");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 18
a 永远不能成为String的instanceof,因此编译错误.
a可以是一个实例,List如果某个子类Animal将实现该List接口,您将分配这样的子类的实例a.因此编译器允许它.
来自JLS:
如果RelationalExpression对ReferenceType的强制转换(第15.16节)将作为编译时错误被拒绝,则关系表达式的实例同样会产生编译时错误.在这种情况下,instanceof表达式的结果永远不会成立.
| 归档时间: |
|
| 查看次数: |
2418 次 |
| 最近记录: |