使用java注释可以做什么,不可以做什么?
典型的用例是针对简单的事情,比如@Override,但显然你可以用它们做更多的事情。如果你突破了它们的极限,你会得到这样的结果,尽管我的理解是这是对注释的巨大滥用。你到底能做什么?在编译时和运行时使用注释可以做什么?你不能做什么 我们使用运行时注释和反射来定制到数据库的域模型映射。此外,我们的表单验证基于运行时使用的代码中的注释 此外,您还可以使用Java附带的注释处理器对源文件进行预处理 编辑:正如在问题中所问的那样,添加了一种新的更强大的方法来使用这种注释处理,比这里大多数人认为可能的方法都要强大。让我用几句话来描述这一点:它们在使用java注释可以做什么,不可以做什么?,java,annotations,Java,Annotations,典型的用例是针对简单的事情,比如@Override,但显然你可以用它们做更多的事情。如果你突破了它们的极限,你会得到这样的结果,尽管我的理解是这是对注释的巨大滥用。你到底能做什么?在编译时和运行时使用注释可以做什么?你不能做什么 我们使用运行时注释和反射来定制到数据库的域模型映射。此外,我们的表单验证基于运行时使用的代码中的注释 此外,您还可以使用Java附带的注释处理器对源文件进行预处理 编辑:正如在问题中所问的那样,添加了一种新的更强大的方法来使用这种注释处理,比这里大多数人认为可能的方法都
通过这种方式,eclipse向您展示了更多您真正编写的代码,javac也相信这一点。生成器技术使用老式的Java注释处理,但您可以认为Lombok是每个人都缺少的粘合剂,使其真正有用。注释是元数据,是关于信息的信息,在本例中是您的代码 使用注释,您可以向注释的使用者提供提示和线索,例如编译器或运行时的代码本身。我曾经在一些场合仔细地使用过它们,它们的存在取代了对其他布尔比较求值为true的需要,属性提供了更多关于实际需要做什么的信息,因为注释存在 关于你不能用注解做的事情。。我不知道该怎么回答。如果它们能解决实际问题或使您的代码更加优雅,请使用它们,但不要强行使用
请原谅我可能过于简化了。注释属于反射。注释本身并不能提供任何功能,您需要在代码中使用它们,或者将它们与动态代理或字节码重写(也属于反射领域)等功能结合使用 反射被认为是非常强大的,但同时也可能是危险的 我认为潜在的问题是:“注释的合法用途是什么,或者更普遍地说是反射?” 由于反射和安全之间存在紧张关系(破坏类型系统、访问最终字段等),因此有两个阵营:拥护元编程的阵营和拥护安全的阵营。什么是合法的最终是品味和观点的问题 相关问题:
根据您的评论,您似乎对JSR-269和编译过程中的挂钩最感兴趣。我看到了JSR-269的两个用例:用于自定义错误/语义检查(例如覆盖),用于DSL/语言工程。我不知道它是否被广泛用于黑客攻击和实验。下面是一位同事的一些很酷的链接:
也就是说,字节码转换/编译器挂钩仍然属于元编程。例如,您可以在编译时生成像Lombok中那样的getter/setter,或者在运行时使用一个动态代理。所以对我来说,这种二元性意味着我们仍然处在反射的领域 我很确定你不能用注释来洗衣服 但除此之外,根据我的经验,注释还有一些真正的局限性:
- (Hibernate的实现)