首页 / JAVA / java – 在编译时添加/生成方法
java – 在编译时添加/生成方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在编译时添加/生成方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1662字,纯文字阅读大概需要3分钟。
内容图文
![java – 在编译时添加/生成方法](/upload/InfoBanner/zyjiaocheng/792/8c2480e1ddd84d00948bb231ae3acbc2.jpg)
我目前正在构建一个API,我将要求许多开发人员使用.大多数都是直截了当的,但有一些api调用本质上是复杂的,但应该以相当多的样板方式使用.
我想要做的是在类中生成样板代码,可能通过标记一些注释,但那些生成的方法在Eclipse / IntelliJ中可供开发人员查看.我看了Javassist,但不确定运行时性质是一件好事.我宁愿采用编译时方法.
如果可能的话,我希望隐藏实现的代码(即我不希望开发人员尝试更改生成的方法的代码,因为它们将在重新编译时重写).
完成这一切是为了将处理的复杂性隐藏在开发人员和维护人员之外,并将其保留在核心框架代码中.
解决方法:
这个问题分为两部分.首先,您希望开发人员可以使用API??,而无需编写/公开样板实现.其次,您希望自动生成样板代码.
如果您愿意承认正在使用某个框架,则可以在不生成代码/字节码的情况下执行此操作:
>对于每个重要概念,编写一个完全定义API的接口.
>现在编写不实现接口的相应类,但匹配非样板API的方法签名.您可能希望使用命名约定来配对它们.
>编写一个使用Java Proxies生成接口实现的工厂.代理将尽可能委托实施.样板代码将直接在实现处理程序中实现.
>您可能需要各种类型的调用处理程序,在这种情况下,也要考虑这些的命名约定
>如果您不喜欢逻辑和接口之间未经检查的耦合,请提取不包含样板API的超级接口.
>使用这些结构的逻辑将通过接口名称请求实例;工厂将知道如何实例化底层逻辑实例和调用处理程序.
另一方面,如果您不希望开发人员记住框架的存在,或者您需要样板实现来访问逻辑的内部,那么您需要进行代码生成/字节码操作.
操作本身可以使用自定义类加载器完成,或者在使用Java Agents进行初始类加载时完成.但是如何让API可供开发人员使用?以下是一些想法:
>使实现类成为抽象,并声明将生成样板代码的抽象方法.
>编写样板方法的存根实现(即在void方法中不执行任何操作;在所有其他方法中抛出RuntimeException.)使用一些注释标记这些方法.
>执行类似Google Web Toolkit的操作,并将样板方法声明为本机.这类似于将方法标记为abstract,但允许您执行类最终的操作.
内容总结
以上是互联网集市为您收集整理的java – 在编译时添加/生成方法全部内容,希望文章能够帮你解决java – 在编译时添加/生成方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。