如何在多个类实现接口后正确地修改接口?Java

3

我有一个

public interface DoIt {
    void dosomething (int i, double x);
    int dosomethingelse (String s);
}

实现它的一些类是class_of_a等等...我想在接口中添加一个新方法,比如diditwork(int x);。我应该怎么做才能避免重新编译或可能出现的任何问题?新的层次结构将是什么?


3
这种新方法是否应该由现有类实施?如果不是,将其添加到接口中就没有意义。如果需要,那么我们无法避免重新编译已经实施的类。 - kosa
看看JDK在SortedSetNavigableSet方面的先例...处理这个问题不会有一个_好的_方式。;) - Louis Wasserman
3个回答

7
创建一个新的接口并扩展旧的接口,类似于:
interface DoIt2 extends DoIt
{
    // void doSomething(int i, double x);
    // int doSomethingelse(String s);
    void didItWork(int x);
}

3
为什么在DoIt2中需要前两种方法? - Razvan
如果DoIt2扩展了DoIt,为什么要在那里放置DoIt的方法? - Andrzej Bobak

2
你可以像这样扩展你现有的接口:
interface DoItMore extends DoIt {  diditwork(int x);  }  

因此,您将拥有适用于低级类的旧接口和适用于高级类的新接口。然后,您需要更改高级类中使用的接口。


-1
创建另一个接口,并让给定的类实现这两个接口。
例如:
public interface DoIt { 
    void dosomething(int i, double x);
    int dosomethingelse(String s);
}

和新的界面

public interface CheckIt {
    boolean diditwork(int x);
}

不需要进行检查的类只需实现DoIt接口,需要进行检查的类还需实现CheckIt接口


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接