一个类实现两个接口java

时间:2015-02-28 11:29:28

标签: java interface

我有一个类实现两个不同的接口,例如:

public interface SortList{
void Sort();
search();
delete();
}

public interface unSortedList{
search();
delete();
}

class List implements ordenedList,unordenedList{}

我想在规定的界面或非强制列表之间切换,谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

你必须制作2个不同的类,如OrderedList和UnorderedList。实现只是您实施这些mehtots的保证。因此,您必须制作一个开关案例,或者如果您的方法中有其他情况,或者您必须制作两个不同的类。

答案 1 :(得分:0)

我不知道你在"Ordened""UnOrdened"背后隐藏了什么意思,如果有一个实现两者的课程是有意义的,但无论如何,这里有一个例子说明你怎么做使用多个接口实现,试图跟上你的东西。 我想通过命令解释here的Java含义,

让我们说Ordered接口可以通过索引访问某个对象(类型为T)并搜索或查找给定对象:

public interface Ordered<T> {
    T getNth(int i);
    T find(T o);
}

让我们说UnOrdered接口只提供查找对象的方法:

public interface UnOrdered<T> {
    T find(T o);
}

现在我们可以定义一个实现两个接口的类:

public class MyList<T> implements Ordered<T>, UnOrdered<T> {
    List<T> theList;

    public MyList(T...a) {
        theList = Arrays.asList(a);
    }

    // The list of objects are neither sorted nor hashed. 
    // Only way to find an object is to iterate through the list
    public T find(T o) {
        for (T e : theList) {
            if (e.equals(o)) {
                return e;
            }
        }
        return null;
    }

    public T getNth(int i) {
        return theList.get(i);
    }       
}

public static void main(String[] args) {
    MyList<Integer> mylist = new MyList<>(2,8,6,1,7,3,5,9,10,4);
    System.out.println(mylist.getNth(3));
    // => print 1
    System.out.println(mylist.find(3));
    // => print 3
    System.out.println(mylist.find(42));
    // => print null
}

答案 2 :(得分:0)

你可以更好地描述问题和你想要解决的问题,假设我理解了问题,你可以用Java 8 Default methods实现这一点,这里是如何

  public interface UrdenedList{
        void ordenate();
        default T search(){
          // default implementation here
        }
        default void delete(){
         // default implementation here
        }

    }

    public interface UnordenedList{
        default T search(){
          // default implementation here
        }
        default void delete(){
         // default implementation here
        }

    }
  

我想在ordened接口之间切换或者没有ordened列表,谢谢   你的帮助。

class List implements OrdenedList,UnordenedList{
   void ordenate(){
  // implementation here
}

T search(){
 if(condition)
    return OrdenedList.search();
  else 
    return UnordenedList.search();
}
}

void delete(){
  if(condition)
    OrdenedList.delete();
  else 
    UnordenedList.delete();
}
}

注意通过显式选择从接口OrdenedList和OrdenedList

调用方法来解决冲突