是否有一种简单的方法可以从Java类中提取接口,使其包含超类的公共方法。 我试图提取界面的类有几层超类,每一类都有很多方法。我不需要每个父类的接口。
目前我正在使用InteliJ构思IDE。它在提取接口时只提取当前类的公共方法。如果你们可以告诉我一个工具或一个简单的方法来提取界面,那将是一个很大的帮助。
答案 0 :(得分:1)
Eclipse在“Extract Interface”重构中不提供超类方法。这是正确的,因为你真的不应该实现一个接口并在超类中实现这些方法!
你想要这样的东西:
public interface InterfaceForB {
void b();
void a();
}
public class A {
public void a(){}
}
public class B extends A implements InterfaceForB{
public void b(){}
}
是的,它编译。但它的风格很糟糕,因为它说,B
实现了接口,这是不正确的,因为a()
方法在类A
中实现了 。 / p>
我的强烈建议:使用IntelliJ提供的重构,只将方法提取到实际类实现实际的接口。为给定示例实现B
,以便它实现所有接口方法:
public class B extends A implements InterfaceForB{
public void b(){}
public void a(){ super(); }
}
现在IntelliJ(和eclipse)可以按照你想要的方式提取界面。
答案 1 :(得分:0)
还有用于提取接口/超类的重构工具。