2011-01-25 33 views
0

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

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

回答

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

我的强烈建议是:使用IntelliJ提供的重构,只将方法提取到真实类实现的接口真的。实施B对于给定的例子,使其实现所有接口方法:

public class B extends A implements InterfaceForB{ 
    public void b(){} 
    public void a(){ super(); } 
} 

现在的IntelliJ(和eclipse)可以提取界面,你想要的方式。

0

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

还有用于提取接口/超级类的refactory工具。

相关问题