在接口被许多类实现之后,如何正确地更改它?JAVA

在接口被许多类实现之后,如何正确地更改它?JAVA,java,Java,我有一个 public interface DoIt { void dosomething (int i, double x); int dosomethingelse (String s); } 一些实现它的类是class\u of_a等。。。 我想在接口中添加一个新方法,比如说diditwork(intx) 我应该如何做到这一点,同时避免重新编译的问题或任何可能的问题?新的层次结构是什么?创建一个新接口并扩展旧接口,例如: interface DoIt2 extends D

我有一个

public interface DoIt {
    void dosomething (int i, double x);
    int dosomethingelse (String s);
}
一些实现它的类是
class\u of_a
等。。。 我想在接口中添加一个新方法,比如说
diditwork(intx)

我应该如何做到这一点,同时避免重新编译的问题或任何可能的问题?新的层次结构是什么?

创建一个新接口并扩展旧接口,例如:

interface DoIt2 extends DoIt
{
    // void doSomething(int i, double x);
    // int doSomethingelse(String s);
    void didItWork(int x);
}

创建另一个接口并让给定类实现这两个接口

e、 g

和新的接口

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

不需要检查的类将只实现DoIt接口,需要检查的类也将实现CheckIt接口

您可以像这样扩展现有接口:

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

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

这个新方法是否应该由现有类实现?若并没有,那个么添加到接口就并没有意义了。如果需要,那么我们就无法避免重新编译实现的类。看看JDK在
SortedSet
NavigableSet
方面的先例……这不是一个很好的解决方法为什么您需要DoIt2中的前两个方法?如果DoIt2扩展了DoIt,为什么您要将DoIt的方法放在那里?