在Java中使用instanceof时,与实现类的接口的返回值为true



我自学了Java,对使用"instanceof";在Java中。基本上我知道使用instanceof,但是我在这个案例中遇到了困难。我写了一个接口,然后用一个类来实现那个接口。接下来,我想检查接口是否具有实现类的instanceof。我试过了,但返回值只有"0";false";但我希望它能回来";真";我该怎么写?我能实现这个目标吗?有什么示例代码或建议吗?我会非常感激的,我会很感激的。对不起,我是个新手,谢谢。

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);
}
}    

您给出的代码运行得非常好。result为false,因为demo而不是A的实例。事实上,情况恰恰相反。因为A实现了Demo,所以当A的所有实例被检查为Demo时,它们都将返回true。

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

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

编辑:由于@Thomas的评论更改了demo的声明(谢谢!(

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

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

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

您不能创建接口的对象,因为接口基本上是一个完整的抽象类。这意味着接口只有方法的减速,而不是它们的实现。所以,如果我们没有任何方法的实现,那么这意味着如果我们创建该接口的对象并调用该方法,它就不会编译任何东西,因为没有代码可以编译

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);
}
}

最新更新