首页 > 解决方案 > JAVA实现接口,方法取值和返回类型接口

问题描述

我遇到了一个问题。我必须实现这个接口:

public interface Set_of_objects {
    boolean equal(Set_of_objects s);
    Set_of_objects cross(Set_of_objects s);
}

实现它的类必须获取一个对象数组并用另一个对象数组对其进行测试。如果它们相等,方法“equal”应该返回true(如果它们不相等,则返回false),方法“cross”必须返回由它们共享的对象组成的对象数组。

由于方法中所需的参数类型,我什至无法弄清楚如何比较这两个数组。

public class Object_array_test implements Set_of_objects {
    Object[] x = new Object[5];

    public Object_array_test (Object[] x) {
        this.x = x;
    }
    public boolean equal(Set_of_objects s) {
        return  s.equals(x);
    }
    public cross(Set_of_objects s) {
        return null;
    }
}

当我这样做时,它会说:“equals() 的参数类型不太可能:Object[] 似乎与 Set_of_objects 无关”

当我尝试投射时(就像我在互联网上看到的那样):

Object[] y = (Object[]) s;

我明白了:“无法从 Set_of_objects 转换为 Object[]”

我该如何解决这个问题,有人可以解释一下它是如何工作的吗?谢谢你,很抱歉这个愚蠢的问题。

标签: javainheritancemethodstypesinterface

解决方案


A. 试着再读一遍你的要求(慢慢地:-)):

  1. 实现它的类必须接受一个对象数组

  2. 方法“cross”必须返回一个对象数组

所以……也没有

boolean equal(Set_of_objects s);

也不

Set_of_objects cross(Set_of_objects s);

满足您的要求 -Set_of_objects不是数组,而只是一个对象实现的Set_of_objects接口。

你的接口的方法签名必须看起来像

public interface Set_of_objects {
   boolean equal(Set_of_objects[] s);
   Set_of_objects[] cross(Set_of_objects[] s);
}

B. 从其他人手中,你可以像你一样使用你的Set_of_objects作为数组的持有者......但你需要另一种方法(你的数组的吸气剂,例如getX())并用它来比较数组成员......

PS我想你会弄清楚如何遍历数组来比较对象并将它们放入另一个对象中以从cross方法返回。

此外,在现实世界中,不建议从方法中返回新的数组实例......但作为练习,它并不重要。

祝你好运!


推荐阅读