【问题标题】:Java using instanceof method on primitive type gives compiler errorJava 在原始类型上使用 instanceof 方法会产生编译器错误
【发布时间】:2016-06-10 18:48:11
【问题描述】:

我正在学习Java,不明白为什么下面的代码编译不出错:

public class SecondClass{

public static void main(String[] args){
    int number = 45;
    if (number instanceof String) {
        System.out.println("Not a String!");
    }
  }
}

为什么我的条件操作会出错? instanceof 应该返回 truefalse 对吗?在这种情况下应该有false,因为numberint,但是这段代码不能编译。

【问题讨论】:

标签: java instanceof


【解决方案1】:

来自section 15.20.2 of the JLS

instanceof运算符的RelationalExpression操作数的类型必须是引用类型或者null类型;否则,会发生编译时错误。

在您的情况下,RelationalExpression 操作数的情况是 int,因此您会收到编译时错误。

即使你有一个Integer 类型的表达式,你也会遇到:

如果将 RelationalExpression 转换为 ReferenceType(第 15.16 节)作为编译时错误被拒绝,则 instanceof 关系表达式同样会产生编译时错误。在这种情况下,instanceof 表达式的结果永远不会为真。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2018-05-16
    相关资源
    最近更新 更多