相关疑难解决方法(0)

带有接口的instanceof

如果我尝试使用错误的类的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)

java instanceof

10
推荐指数
1
解决办法
2418
查看次数

为什么instanceof有时不编译,有时返回false?

在以下示例中

  • test instanceof java.util.Map返回false

  • 测试instanceof java.util.HashMap无法编译

  • mymap instanceof Set返回false和
  • mymap instanceof HashSet返回false(为什么要编译?!?)

为什么?他们看起来彼此如此相似!

import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.HashSet;

public class InstanceofTest {
    public static class Test {}
    public static void main(String[] args) {
        // -- left operand references a Class instance
        Test test = null;

        // 1. outputs: false
        System.out.println(test instanceof Map);

        // 2. COMPILATION ERROR
        System.out.println(test instanceof HashMap);


        // -- left operand references an Interface instance
        Map mymap = new HashMap();

        // 3. outputs: false …
Run Code Online (Sandbox Code Playgroud)

java inheritance interface class instanceof

3
推荐指数
1
解决办法
543
查看次数

标签 统计

instanceof ×2

java ×2

class ×1

inheritance ×1

interface ×1