大部分都使用C#,我倾向于考虑Java中没有的C#功能.在去年广泛使用Java之后,我开始发现我希望在C#中使用的Java功能.以下是我所知道的列表.任何人都可以想到C#背景的人可能没有意识到的其他Java语言特性吗?
文章http://www.25hoursaday.com/CsharpVsJava.html和http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp给出了一个非常广泛的Java和C#之间的差异列表,但我想知道我是否遗漏了(非常)长篇文章.我还可以想到我在两篇文章中都没有提到的一个特征(协变返回类型).
请限制语言或核心库功能的答案,这些功能无法通过您自己的自定义代码或第三方库有效实现.
协变返回类型 - 方法可以由返回更具体类型的方法覆盖.在实现接口或扩展类时很有用,并且您希望重写方法返回更具体类的类型.这可以使用C#中的显式接口实现来模拟,但是在重写类方法时没有简单的等价物.
枚举是类 - 枚举是java中的完整类,而不是像.Net中的原语的包装.Java允许您在枚举上定义字段和方法.
匿名内部类 - 定义实现方法的匿名类.虽然.Net中的代表可以使用Java中的大部分用例,但在某些情况下,您确实需要将多个回调作为一个组进行传递.选择使用匿名内部类是很好的.
检查异常 - 我可以看到它在与Java应用程序一起使用的常见设计的上下文中是如何有用的,但是我对.Net的经验使我习惯于仅在不可恢复的条件下使用异常.IE异常表示应用程序中存在错误,仅用于记录日志.我还没有完全考虑在正常程序流程中使用异常.
strictfp - 确保严格的浮点运算.我不确定哪种应用会发现这有用.
接口中的字段 - 可以在接口中声明字段.我从来没有用过这个.
static imports - 允许一个人使用类的静态方法,而不用类名限定它.我今天才意识到这个功能存在.这听起来很方便.
Java 的泛型允许类型通配符。例如,<T extends Object & Comparable<? super T>> T Collections.max(Collection<? extends T>) { ... }无法用 C# 表达。
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |