有没有办法在Eclipse中自动生成包装?

问题描述:

我必须创建几个代理,例如添加日志。类似的东西:有没有办法在Eclipse中自动生成包装?

interface IMath { 
    public int add(a, b); 
} 

class Math implements IMath { 
    public int add(a, b) { return a + b; } 
} 

class MathWithLogs implements IMath { 
    private IMath realMath; 
    public int add(a, b) { 
     Log.d("tag", "valueable info"); 
     return realMath.add(a, b); 
    } 
} 

一切都很好,只要这些接口不是20种方法,我必须添加一些东西到一个。

我的问题是,有没有办法使用一些插件来自动生成包装类?

或者也许有一种方法可以做一些注释来从realMath调用方法,除非另有说明(如@Override)?

+1

您可能还想看看AspectJ(或者一般来说,AOP)以及Java的标准代理机制。这些将优雅地处理上面的用例,而不需要编写任何新类。 – Romain 2012-08-17 10:26:41

右键点击任何的源文件(的.java),然后导航到source -> Override/Implement Methods/Generate Delegate Methods.

第一个将粘贴您的直接接口的所有方法的身体。 第二个将做所有的层次到对象(我猜,不知道)相同。 希望这有助于。

+0

它们中的任何一个都支持到Object的所有层次结构。只有委托人支持包装类中通常需要的委托。对于那个,你不能右键单击源文件中的任何地方,你必须右键单击你想要委托的字段。 – Kidburla 2015-05-19 21:38:30

是的,有一个名为“Generate Delegate Methods”的源代码生成器,它将完成您想要的功能。

在阅读其他答案后,我花了一段时间才弄清楚该怎么做。解决方案是:

  1. 创建您的(初始为空)包装类,它实现所需的接口。确保在创建类时取消选中“继承的抽象方法”。
  2. 在您的新包装类(由于缺少接口实现的情况下,此时会显示错误),请创建一个类型与所需接口相同的字段。
  3. 右键单击刚才创建的字段,然后选择源代码 - >生成委托方法。
  4. 检查您想要创建的方法,然后单击确定。
  5. 最后,为该字段添加一个单参数构造函数或setter方法(它不会自动生成为此过程的一部分)。