首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用instanceof测试接口

使用instanceof测试接口
EN

Stack Overflow用户
提问于 2014-03-24 22:51:59
回答 2查看 1.1K关注 0票数 2

我在这个问题上遇到了一些麻烦。问题是:

编写一个完整的Java程序,执行以下操作:

  • 声明I1和I2接口,这两个接口都是空体的
  • 使用空体声明接口I3,这两个接口都扩展了
  • 使用空体声明接口I4
  • 类X用空体实现I3
  • 类W与空体一起实现I4并扩展X
  • 创建一个在main()中执行以下操作的类InstanceofTest:
    • 创建一个W类的对象W。
    • 使用instanceof操作符测试对象w是否实现了每个接口,是否为X类型,并显示适当的消息。

这就是我到目前为止想出的:

代码语言:javascript
复制
public interface I1
{

}

代码语言:javascript
复制
public interface I2
{

}

代码语言:javascript
复制
public interface I3 extends I1, I2
{

}

代码语言:javascript
复制
public interface I4
{

}

代码语言:javascript
复制
public class W extends X implements I4
{

}

我对InstanceofTest方法有点困惑。我知道instanceof操作符会告诉您某个对象是否是某种类型的实例,就像您这样做时:

代码语言:javascript
复制
public class InstanceofTest
{

    public static void main(String[] args)
    {
        W w = new W();
        if (w instanceof X)
        {
            System.out.println("w is an instance of X.");
        }
    }
}

我遇到的问题是使用instanceof查看w是否实现了每个接口。我不知道我会怎么做。任何帮助都将不胜感激!

编辑:那么,我应该这样做吗?

代码语言:javascript
复制
public class InstanceofTest
{
    public static void main(String[] args)
    {
        W w = new W();
        if (w instanceof X)
        {
            System.out.println("w is an instance of X.");
        }

        if (w instanceof I1)
        {
            System.out.println("w implements I1.");
        }

        if (w instanceof I2)
        {
            System.out.println("w implements I2.");
        }

        if (w instanceof I3)
        {
            System.out.println("w implements I3.");
        }

        if (w instanceof I4)
        {
            System.out.println("w implements I4.");
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-24 23:02:57

好吧,这是你的完整解决方案:

代码语言:javascript
复制
public interface I1 {}

代码语言:javascript
复制
public interface I2 {}

代码语言:javascript
复制
public interface I3 extends I1, I2 {}

代码语言:javascript
复制
public interface I4 {}

代码语言:javascript
复制
public class X implements I3 {}

代码语言:javascript
复制
public class W extends X implements I4 {}

代码语言:javascript
复制
public class InstanceofTest {
  public static void main(String[] args){
      W w = new W();

      if (w instanceof I1)
        System.out.println("W implements I1");

      if (w instanceof I2)
        System.out.println("W implements I2");

      if (w instanceof I3)
        System.out.println("W implements I3");

      if (w instanceof I4)
        System.out.println("W implements I4");

      if (w instanceof X)
        System.out.println("W extends X");
    }
}

结果是W实现了所有的接口并扩展了X

票数 1
EN

Stack Overflow用户

发布于 2014-03-24 22:58:17

将这些接口像Collection一样存储在Set<Class> classes中,然后遍历它们并与对象进行比较。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22622222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档