![](/img/trans.png)
[英]How to declare an interface method if i already have an implementation with generic
[英]How do i declare a static equals method in a generic interface that compares two types of implementation of the interface?
我正在为 class 研究 java,作为我实验室的一部分,我们已经实践了代表 Set ADT 的通用接口的不同实现。 实验室的一部分要求我在接口中声明一个 static equals 方法。
在我自己的尝试中,这就是我创造的
package lab5;
public interface Set<T> {
public static boolean equals(Set<T> equalSetOne, Set<T> equalSetTwo ) {
Object[] testArrayOne;
Object[] testArrayTwo;
testArrayOne = equalSetOne.toArray();
testArrayTwo = equalSetTwo.toArray();
if((testArrayOne.length != 0) && !(equalSetTwo.isEmpty())) {
for(int i = 0; i < testArrayOne.length; i++) {
if(!equalSetTwo.contains(testArrayOne[i])) {
return false;
}
}
}
if((testArrayTwo.length != 0) && !(equalSetOne.isEmpty())) {
for(int i = 0; i < testArrayTwo.length; i++) {
if(!equalSetOne.contains(testArrayTwo[i])) {
return false;
}
}
}
return true;
}
public boolean add(T newElem);
public T remove();
public boolean remove(T removedElem);
public int getSize();
public boolean isEmpty();
public boolean contains(T containElem);
public void clear();
public Object[] toArray();
}
我不确定如何在 equals 方法中声明变量,以便它们适用于任何已实现的 Set object。感谢您提供的任何帮助。
在您的设计中,访问 Set 元素的唯一方法是将其转换为数组并使用该数组。 那很不方便。
java.util.Set 接口扩展了 Iterable,因此您可以直接对其进行迭代。 即使使用 for-each 循环。 您也可以将其添加到您的 Set 中。
public interface Set<T> extends Iterable<T> {
public static boolean equals(Set<T> equalSetOne, Set<T> equalSetTwo ) {
for (T elementOne: equalSetOne) {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.