是否有一种简单的方法从Java类中提取接口,使其包含超类的公共方法。 我试图提取界面的类有几层超类,每个超类都有很多方法。我不需要每个父类的接口。有没有简单的方法从Java类中提取接口,包括超类的公共方法?
当前我正在使用InteliJ IDE IDE。它只提取当前类的公共方法,当提取一个接口时。如果你们可以告诉我一个工具或简单的方法来提取界面,这将是一个很大的帮助。
是否有一种简单的方法从Java类中提取接口,使其包含超类的公共方法。 我试图提取界面的类有几层超类,每个超类都有很多方法。我不需要每个父类的接口。有没有简单的方法从Java类中提取接口,包括超类的公共方法?
当前我正在使用InteliJ IDE IDE。它只提取当前类的公共方法,当提取一个接口时。如果你们可以告诉我一个工具或简单的方法来提取界面,这将是一个很大的帮助。
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
。
我的强烈建议是:使用IntelliJ提供的重构,只将方法提取到真实类实现的接口真的。实施B
对于给定的例子,使其实现所有接口方法:
public class B extends A implements InterfaceForB{
public void b(){}
public void a(){ super(); }
}
现在的IntelliJ(和eclipse)可以提取界面,你想要的方式。
Eclipse有一个名为“类型层次结构”的工具,它允许您查看该类的成员,该类的继承结构(包括接口)(以及该类/接口的成员),以及还有任何扩展/实现你的课程的类。
还有用于提取接口/超级类的refactory工具。