为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中,‘instanceof’操作符是用来做什么的?

在Java中,‘instanceof’操作符是用来做什么的?

达令说 2019-06-21 17:34:50
在Java中,‘instanceof’操作符是用来做什么的?什么是instanceof接线员?我见过这样的东西if (source instanceof Button) {     //...} else {     //...}但这一切对我来说都没有意义。我已经做了我的研究,但只提出了例子,没有任何解释。
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

instanceof关键字是二元算子用于测试对象(实例)是给定类型的子类型。

想象一下:

interface Domestic {}class Animal {}class Dog extends Animal implements Domestic {}class Cat extends Animal implements Domestic {}

想象一下dog 对象,与Object dog = new Dog(),然后:

dog instanceof Domestic // true - Dog implements Domesticdog instanceof Animal   // true - Dog extends Animaldog instanceof Dog    
  // true - Dog is Dogdog instanceof Object   // true - Object is the parent type of all objects

然而,与Object animal = new Animal();,

animal instanceof Dog // false

因为AnimalDog可能也没那么“精致”。

和,

dog instanceof Cat // does not even compile!

这是因为Dog既不是子类型也不是超级类型。Cat,而且它也没有实现它。

请注意,用于dog以上类型Object..这是为了显示instanceof运行时操作,并将我们带到一个/用例:根据运行时的对象类型作出不同的反应.

要注意的事情:expressionThatIsNull instanceof T对所有类型都是false。T.

编码愉快。


查看完整回答
反对 回复 2019-06-21
?
当年话下

TA贡献1890条经验 获得超9个赞

如果表达式的左侧为实例右侧的类名。

这样想吧。说你街区里所有的房子都是用相同的蓝图建造的。十个房子(物体),一套蓝图(类别定义)。

instanceof是一个有用的工具,当你有一个对象的集合,而你不知道它们是什么。假设您有一个窗体上的控件集合。您希望读取任何复选框的选中状态,但不能要求普通的旧对象提供其选中状态。相反,您将看到每个对象是否是一个复选框,如果是,则将其转换为复选框并检查其属性。

if (obj instanceof Checkbox){
    Checkbox cb = (Checkbox)obj;
    boolean state = cb.getState();}


查看完整回答
反对 回复 2019-06-21
?
桃花长相依

TA贡献1860条经验 获得超8个赞

如上文所述本站:

这个instanceof运算符可用于测试对象是否为特定类型.

if (objectReference instanceof type)

一个简单的例子:

String s = "Hello World!"return s instanceof String;//result --> true

然而,申请instanceof在空引用变量/表达式上返回false。

String s = null;return s instanceof String;//result --> false

由于子类是其超类的“类型”,所以可以使用instanceof来验证这个.。

class Parent {
    public Parent() {}}class Child extends Parent {
    public Child() {
        super();
    }}public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        System.out.println( child instanceof Parent );
    }}//result --> true

我希望这能帮到你!


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 627 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信