首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#中没有等价物的Java语言特性

C#中没有等价物的Java语言特性
EN

Stack Overflow用户
提问于 2010-03-17 02:17:01
回答 5查看 1.3K关注 0票数 16

由于我主要使用C#,所以我倾向于从C#特性的角度考虑,而这些特性在Java语言中是不可用的。在去年广泛使用Java之后,我开始发现我希望在C#中具有的Java特性。下面是我所知道的列表。有没有人能想到有C#背景的人可能没有意识到的其他Java语言特性?

文章http://www.25hoursaday.com/CsharpVsJava.htmlhttp://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp给出了一个非常广泛的Java和C#之间的差异列表,但是我想知道我在(非常)长的文章中是否遗漏了什么。我还可以想到一个特性(协变返回类型),这两篇文章都没有提到它。

请将回答限制在您自己的自定义代码或第三方库无法有效实现的语言或核心库功能上。

  1. 协变返回类型-方法可以被返回更具体类型的方法覆盖。在实现接口或扩展类,并且希望重写方法返回更特定于您的类的类型时非常有用。这可以在C#中使用显式接口实现来模拟,但在覆盖类方法时没有简单的等价物。

枚举是类-

  1. 枚举在java中是一个完整的类,而不是像.Net中对原语的包装。Java允许你在enum.
  2. Anonymous内部类上定义字段和方法--定义一个实现方法的匿名类。尽管Java语言中的大多数用例都包含在.Net中的委托中,但在某些情况下,您确实需要将多个回调作为一个组进行传递。如果可以选择使用匿名内部类,那就太好了。
  3. 检查异常-我可以看到这在与.Net应用程序一起使用的常见设计的上下文中是多么有用,但我使用.Net的经验使我养成了只在不可恢复的情况下使用异常的习惯。即,异常指示应用程序中的错误,并且仅出于日志记录的目的而被捕获。我还没有完全接受在普通程序flow.
  4. strictfp中使用异常的想法--确保严格的浮点运算。我不确定什么样的应用程序会在接口中找到这个useful.
  5. fields --在接口中声明字段是可能的。我从来没有用过这个。
  6. static imports -允许用户使用类的静态方法,而不需要使用类名进行限定。我今天才意识到这个功能是存在的。听起来像是个不错的convenience.
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2456975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档