有没有一种简单的方法从Java类中提取接口,包括超类的公共方法?

时间:2011-01-25 06:59:01

标签: java interface automation

是否有一种简单的方法可以从Java类中提取接口,使其包含超类的公共方法。 我试图提取界面的类有几层超类,每一类都有很多方法。我不需要每个父类的接口。

目前我正在使用InteliJ构思IDE。它在提取接口时只提取当前类的公共方法。如果你们可以告诉我一个工具或一个简单的方法来提取界面,那将是一个很大的帮助。

2 个答案:

答案 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)

Eclipse有一个名为“类型层次结构”的工具,它允许您查看该类的成员,该类的继承结构(包括接口)(以及相应类/接口的成员),以及任何扩展/实现你的类的类。

还有用于提取接口/超类的重构工具。