我有一个类实现两个不同的接口,例如:
public interface SortList{
void Sort();
search();
delete();
}
public interface unSortedList{
search();
delete();
}
class List implements ordenedList,unordenedList{}
我想在规定的界面或非强制列表之间切换,谢谢你的帮助。
答案 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
调用方法来解决冲突