Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java7以后的版本应该具备哪些特性来鼓励从C#转换?_C#_Java_Programming Languages_Language Features - Fatal编程技术网

Java7以后的版本应该具备哪些特性来鼓励从C#转换?

Java7以后的版本应该具备哪些特性来鼓励从C#转换?,c#,java,programming-languages,language-features,C#,Java,Programming Languages,Language Features,C#目前势头良好。要切换(或返回)到Java,您需要具备哪些功能 如果人们在当前的Java版本中发布了解决这些问题的方法,例如,将Nullables包装在自定义类中,使其成为一个更有趣的wiki,这将非常有用。我需要某种类型的函数指针。在C#中使用委托的能力非常有用。在Java中,有很多次我想创建委托或函数指针的映射作为解决方案,但我做不到。我知道你可以用Java模拟类似的东西,但是把抽象作为语言的一部分是一个巨大的优势 刚开始,我认为Java 7最需要的是闭包,每个人都在为缺少闭包而哀叹。根据

C#目前势头良好。要切换(或返回)到Java,您需要具备哪些功能


如果人们在当前的Java版本中发布了解决这些问题的方法,例如,将Nullables包装在自定义类中,使其成为一个更有趣的wiki,这将非常有用。

我需要某种类型的函数指针。在C#中使用委托的能力非常有用。在Java中,有很多次我想创建委托或函数指针的映射作为解决方案,但我做不到。我知道你可以用Java模拟类似的东西,但是把抽象作为语言的一部分是一个巨大的优势

刚开始,我认为Java 7最需要的是闭包,每个人都在为缺少闭包而哀叹。

根据我的经验,Java vs.Net更像是一个商业决策,而不是一个技术决策。有MS体验的商店倾向于.Net,有Java体验的商店倾向于Java和OSS。我几乎没有看到人们根据语言特征进行转换的证据。另一方面,我看到一些商店非常倾向于一个平台b/c,他们希望雇佣一两名在该领域有知识的关键员工。

我认为,Java和c之间的选择不是语言特性的问题,而是平台和生态系统选择的问题

因此,我怀疑Java或C#中的任何新语法糖是否会导致平台之间的大量转换


毕竟,JVM world有Scala,许多对语言敏感的开发人员都在以某种方式使用它。

我想要的另一个类似于LINQ的东西。我注意到,当我试图参加顶级编码器竞赛时,我实际上是多么依赖使用LINQ的能力,并意识到他们只支持.NET2.0。一旦您习惯了使用LINQ来解决问题,并将其作为常规编程词汇表的一部分,就很难不从这个角度看待问题。这类似于使用泛型,然后不能使用泛型。

我也会给出一个相反的答案。C#需要像Java一样的枚举实现。Java的枚举摇滚


让我也将匿名覆盖添加到此列表中。很抱歉偏离主题,但C#需要匿名重写方法的能力。我一直在Java和C#之间来回切换,我必须说,对于单元测试遗留代码,没有什么比匿名类重写更好的了。

一种将模型中的值映射到UI的简单方法(如Java/FX中的
bind

属性

匿名对象也很不错

我是一名C#程序员,大约一年前我不得不参与Java应用程序的开发。我最怀念的是:

  • VisualStudio(Eclipse很好,但是 VS是VS,尤其是团队版)
  • 将字符串与==
  • 性质
  • 作为一级对象的基本类型 (例如,非“int”类型与“Integer”类型) (班级)
  • 匿名方法(一种解决方法)可以 可以使用匿名类来创建 但这不一样)
  • 林克
当我回到C#时,我错过了一个Java特性:方法签名中的显式异常声明

免责声明:我说的是一个有点老的项目,我不知道这些功能中的一些是否存在于当前版本的Java中。

作为一名.NET/C开发人员,这里有一些缺失的功能让我烦恼。此列表没有特定的顺序-正如我想到的:

  • Java库太小了。对于常见的东西,我必须在5种竞争性开源产品中进行选择,因为基本库在很多方面都缺乏
  • 这是一种面向对象的编程语言,对吗?到底为什么基元类型不从“对象”继承
  • 指针
  • 兰博达斯
  • 闭包
  • 分部类和较小程度上的分部方法
  • 对泛型的真正支持
  • 使用语句和Dispose-这对我来说是一个真正的WTF。您确实必须显式地关闭try/catch块中的连接。可怜的爪哇人
  • 那太好了
  • 无符号整数-还是WTF?我必须使用比我需要的大的数字类型,又有什么用呢
  • 在Java中,您可以从最后的try/catch块返回。一个同事用这种方式引入了一个bug,把我弄糊涂了好几个小时。这种行为应该像C#一样被禁止
  • 我很少使用Java,当我使用Java时,我会有各种各样的WTF时刻


    编辑:我删除了每个注释,因为它不再是自1.5版以来缺失的Java功能。

    不那么令人发指的XML解析和操作工具。在Java中使用XML做任何事情都很糟糕。

    动力。我在这两个平台上都做了很多开发。我更喜欢.NET方面,因为C#语言的发展方式。Java的发展似乎更多的是对C#的反应,而不是实际的愿景。因此,我认为Java最好的做法是忽略.NET,创建自己的新东西。

    没有特定顺序:

    • 函数指针(委托);整件事都很愚蠢
    • 真正的仿制药;如果编译器甚至不能通过单元编译保存元数据,那么使用类型安全泛型有什么意义呢
    • 用户界面速度;与包装在“托管”库中的本机控件相比,所有自绘制ui库都非常慢,更不用说microsoft的自绘制ui是通过direct3d进行硬件加速的
    • 一种
      收益率
      结构
      ;c#在这方面非常人性化,简直是疯了
    • 运算符重载
    • linq;只是因为它让人上瘾
    • 属性;更多你上瘾的糖类
    • b
      (a,b,c) = getThreeValues();