繁体   English   中英

在 Java 中使用 instanceof 时,实现 class 的接口返回值为真

[英]Return value is true of interface with implementing class when using instanceof in Java

我是自学的 Java,我对在 Java 中使用“instanceof”有点困惑。 基本上我知道要使用 instanceof,但是我很难处理这种情况。 我编写了一个接口,然后使用 class 来实现该接口。 接下来,我想检查接口是否具有实现 class 的 instanceof。 我试过但返回值只有“假”但我希望它返回“真”我应该怎么写? 我可以实现那个目标吗?有什么示例代码或建议给我吗? 我将不胜感激,我将不胜感激。 对不起,我是新手,谢谢。

interface Demo {
}

class A implement Demo {
}   

public class Main {
  public static void main(String[] args){
   Demo demo = new Demo() {};
   boolean result = demo instanceof A ;  // I want result is "true";
   System.out.println(result);
  }
  }    

你不能创建接口的object,因为接口基本上是一个完整的抽象class。 这意味着接口只有方法的减速而不是它们的实现。 因此,如果我们没有任何方法的实现,那么这意味着如果我们创建该接口的 object 并调用该方法,它不会编译任何代码,因为没有要编译的代码

interface Demo {
}

class A implements Demo {
}

public class Main
{
    public static void main(String[] args){
        Demo demo = new A();
        boolean result = demo instanceof A ;
        System.out.println(result);
    }
}

A implement Demo等: object with type A instanceof Demo将是true ,但反之则不然。

理想情况下, DemoA一无所知。

而且您不应该创建接口实例。

您提供的代码运行良好。 result为假,因为demo不是A的实例。 事实上,情况恰恰相反。 因为A实现了Demo ,所以A的所有实例在被检查为Demo时都会返回 true 。

您可以将demo定义为A的实例,然后检查它是否是Demo的实例:

A demo = new A();

boolean result = demo instanceof Demo; // now it is true
System.out.println(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM