我自学了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
,但不是相反。
理想情况下,Demo
对A
一无所知。
并且您不应该创建接口的实例。
您不能创建接口的对象,因为接口基本上是一个完整的抽象类。这意味着接口只有方法的减速,而不是它们的实现。所以,如果我们没有任何方法的实现,那么这意味着如果我们创建该接口的对象并调用该方法,它就不会编译任何东西,因为没有代码可以编译
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);
}
}