为什么hibernate不强迫你将字段标记为虚拟,但是nhibernate呢?

时间:2010-01-06 16:25:05

标签: java nhibernate hibernate

为什么hibernate不强迫你将字段标记为虚拟,但是nhibernate会这样做?

这是VM和CLR之间差异的结果吗?

3 个答案:

答案 0 :(得分:6)

这不是运行时之间的区别 - 它是语言之间的区别。

在C#中,默认情况下方法不是虚拟的。在Java中,它们是。

请注意,两个平台都不允许字段是虚拟的,如您的问题中所述。

Hibernate和NHibernate都需要虚拟方法 - 这意味着在C#中使它们显式虚拟。

(请注意,在Java中,术语“虚方法”实际上并未在语言规范中定义;这里我使用它来表示“非最终”:可以覆盖的方法。)

答案 1 :(得分:2)

在Java中,默认情况下所有方法都是虚拟的。在.NET中,您需要将方法明确标记为虚拟。

答案 2 :(得分:1)

因为除非指定了final关键字,否则Java中的默认行为是可覆盖的方法,而在.NET中,除非指定了virtual关键字,否则方法是不可覆盖的。