我目前正在构建一个 API,我将要求许多开发人员使用它。其中大部分都很简单,但有几个 api 调用本质上很复杂,但应该以几乎样板的方式使用。
我想要做的是在类中生成样板代码,也许通过标记一些注释,但是这些生成的方法在 Eclipse/IntelliJ 中可用,供开发人员查看。我查看了 Javassist,但不确定运行时性质是否是一件好事。我宁愿采用编译时方法。
如果可能,我希望隐藏已实现的代码(即我不希望开发人员尝试更改生成方法的代码,因为它们会在重新编译时被覆盖)。
整个过程都是为了向开发人员和维护人员隐藏处理的复杂性,并将其仅保留在核心框架代码中。
这个问题有两个部分。首先,您希望在不编写/公开样板实现的情况下向开发人员提供API。其次,您希望自动生成样板代码。
如果您愿意承认正在使用某些框架,则可以在不生成代码/字节码的情况下执行此操作:
另一方面,如果您不希望您的开发人员记住框架的存在,或者您需要样板实现来访问内部逻辑,那么您需要进行代码生成/字节码操作。
操作本身可以使用自定义类加载器完成,也可以在使用Java 代理进行初始类加载期间完成。但是如何让开发人员可以使用 API?这里有一些想法:
使实现类抽象,并声明将生成样板代码的抽象方法。
编写样板方法的存根实现(即在void方法中什么都不做;扔RuntimeException在所有其他方法中。)用一些注释标记这些方法。
做一些类似于 Google Web Toolkit 所做的事情,并将样板方法声明为native. 这类似于标记方法abstract,但允许您执行诸如创建类之类的操作final。
| 归档时间: |
|
| 查看次数: |
2622 次 |
| 最近记录: |