[英]Record implementing Interface returns false when checked using instanceof (spring-boot, Java 19)
[英]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
,但反之则不然。
理想情况下, Demo
对A
一无所知。
而且您不应该创建接口实例。
您提供的代码运行良好。 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.