java - 注释是 Java 中的某种 DSL 吗?

标签 java ruby annotations metaprogramming dsl

在一堆 XML 配置文件之后,我看到 Java 转向基于注释的配置。

注释在这里扮演着 DSL 的角色吗?

是不是因为Java的静态特性?我在 Ruby 中思考,它没有 (afaik) 那样的东西。是因为Ruby有很好的元编程能力吗?

是否有其他选择(我的意思是除了使用一堆 .xml 文件之外)

最佳答案

基本上,注释 是一种工具,允许您在编译时处理源文件,并执行与文件中找到的注释相对应的操作(可能派生新源)。

它们在很多方面都非常有用,例如明确约束同时避免代码困惑或丰富某些方法的行为。

我不会说它们与 Ruby 的 DSL 如此相似,因为在这种情况下,您可以使用特定语法注释代码,而在 Ruby 中,您可以从头开始设计自己的 DSL 并按需要使用它。

Java 提供了一个名为 apt 的工具(就像您怀疑的那样),它也可以在运行时处理注释,但它们通常用于提供编译-时间信息到您的来源。这并不意味着在某些情况下您不能轻松地调整注释机制来解决您将通过 DSL 获得的相同内容,但它们的存在目的不同。

关于java - 注释是 Java 中的某种 DSL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239249/

相关文章:

Java Socket程序从服务器读回

ruby - 使用 RVM 安装 Ruby 1.9.3 时运行错误 'autoconf'

java - @com.sun.istack.internal.NotNull 注释

ruby-on-rails - rails 将变量添加到映射

ruby - 为什么安装 RDOCS 和 RI 比实际的 gem 花费更长的时间?

objective-c - 在 MapView 中显示 map 注释时遇到问题

java - 让单个 Java 注解隐式设置多个注解

java - 音乐播放器的实现

java - 如何外部化standalone.xml?

java - POM打包option jar to war改错