【发布时间】:2011-05-16 04:42:07
【问题描述】:
我想问为什么这么多使用java注解...我知道它们替换了例如jpa中的xml配置,但是为什么要使用这种配置呢? 考虑这段代码:
@Entity
class Ent{
// some fields
}
//... somewhere in the other file far far away
class NonEnt{
// whatever here
}
现在,当我尝试使用EntityManager 的persist 方法将其置于持久化上下文中时,尝试持久化@987654324 时出现运行时错误(最好是编译错误) @ 实例。对我来说有一个明显的解决方案,强制实体实现一些无方法接口而不是使用@Annotations。但这在框架设计者中并不流行,这种解决方案的缺点是什么?谢谢回答...
【问题讨论】:
-
这是该库开发人员的设计问题。你是对的,编译时错误比运行时错误好。也许 java 编译器应该有一种方法来指定参数的注释?在此之前,标记界面会更好。
-
现在有太多要求关闭问题...为什么人们不证明关闭问题的理由?
-
向后兼容性是许多此类设计决策的原因。当他们只有 XML 文件时,他们可能不想修改 java 类。但是,现在他们无法在不破坏旧版本的情况下强制使用接口。使用注释,您可以使用此或 XML 文件。要拥有接口,您必须更改所有代码才能拥有它,即使是 XML 的用户。
-
题外话:提到Java和XML让我想起了这个小宝石:reddit.com/r/programming/comments/eaqgk/…
标签: java annotations marker-interfaces