当前位置: 首页 > 面试题库 >

为什么使用Java批注?

司马高昂
2023-03-14
问题内容

我想问问为什么Java注释使用了这么多…我知道它们在例如jpa中替换了xml配置,但是为什么要使用这种配置呢?考虑这段代码:

@Entity 
class Ent{
   // some fields
}
//... somewhere in the other file far far away
class NonEnt{
   // whatever here
}

现在,当我尝试使用EntityManager的persist方法将其置于持久性上下文中时,尝试持久化NonEnt实例会遇到运行时错误(最好是出现编译错误)。对我来说,有一个明显的解决方案,强制实体实现某种无方法接口,而不是使用@Annotations。但这在框架设计人员中并不流行,此解决方案的缺点是什么?
谢谢回答…


问题答案:

与标记接口相比,注释具有一些优点:

  • 他们可以 参数化
  • 它们的 粒度 -您不仅可以将它们附加到类,还可以附加到其他类元素(字段,方法,方法参数等)

注释也被认为 不太侵入 ,但是这一点是关于品味和可争议的。



 类似资料:
  • 问题内容: 因此,我知道您正在指定类型,但是为什么呢?在什么条件下会很重要。例如,如果我具有以下方法,并且注释掉@Produces批注,它仍将返回JSON。 API文档说:“如果未指定,则容器将假定可以产生任何类型。” 那么,为什么我不希望容器承担这种责任呢? 问题答案: 我认为这取决于您的JAX- RS实现,但这是泽西对其@Produces批注的解释:https ://jersey.java.n

  • 问题内容: 我发现注释在重写派生类中的某些超类方法时非常有帮助。基本上,编译器会尽早发现程序中的缺陷,这总是一件好事。但是,为什么Java中没有@Implements批注? 问题答案: 因为您也使用接口定义的方法。 (是的,您是“实现”而不是“覆盖” …但同时用于两者)

  • 问题内容: 好的,应该真的向Google的某人问这个,但我只想征询其他意见。 甚至Android也支持本机代码应用程序,主要的开发工具是Java。但为什么?我的意思是,在移动设备上解释代码是否太慢?谷歌在介绍Froyo时说,新的JIT编译器可以使应用程序速度提高2-5倍。这意味着,通过本机代码使用Java的速度要慢2倍。 是的,我知道使用托管代码应用程序在系统稳定性方面更加安全,因为虚拟机可以更好

  • 问题内容: 在托管bean中,是在常规Java对象构造函数之后调用的。 为什么要使用初始化而不是常规构造函数本身? 问题答案: 因为在调用构造函数时,bean尚未初始化-即没有注入依赖项。在该@PostConstruct方法中,bean已完全初始化,你可以使用依赖项。 因为这是保证可以在bean生命周期中仅调用一次此方法的协定。可能会发生(尽管不太可能)容器在其内部工作中多次实例化bean,但它保

  • 问题内容: 使用Java 注释的最佳实践是什么?为什么? 用注解标记每个覆盖的方法似乎是过大的。是否存在某些编程情况要求使用和其他不应该使用的情况? 问题答案: 每次你重写一种方法都有两个好处时使用它。这样做是为了使你能够利用编译器检查的优势,以确保你认为自己确实覆盖了某个方法。这样,如果你犯了拼写错误的方法名称或不正确匹配参数的常见错误,将会警告你方法实际上并没有像你认为的那样覆盖。其次,它使你

  • 问题内容: 最近,我阅读了很多有关Unicode代码点的信息,以及它们随着时间的演变,并确保我也阅读了http://www.joelonsoftware.com/articles/Unicode.html。 但是我找不到真正的原因是Java为什么将UTF-16用作字符。 例如,如果我的字符串包含1024个ASCII范围的字母。这意味着等于2KB的字符串内存,它将以任何方式消耗。 因此,如果Java