我应该如何将 Java 代码转换为 C# 代码

本文关键字:代码 转换 Java 我应该 | 更新日期: 2023-09-27 17:47:21

我正在将Java库移植到C#。我使用的是Visual Studio 2008,所以我没有已停产的Microsoft Java语言转换助手程序(JLCA)。

我的方法是创建一个与 Java 库具有类似项目结构的新解决方案,然后将 Java 代码复制到 c# 文件中,并将其逐行转换为有效的 c#。考虑到我发现Java易于阅读,两种语言的细微差异让我感到惊讶。

有些东西

很容易移植(命名空间、继承等),但有些东西却出乎意料地不同,例如嵌套类中私有成员的可见性、覆盖虚拟方法和内置类型的行为。我不完全理解这些事情,我相信还有很多其他的差异我还没有看到。

我还有很长的路要走。在此转换过程中,我可以应用哪些经验法则来正确管理语言差异?

我应该如何将 Java 代码转换为 C# 代码

你以唯一理智的方式做到这一点,你可以...最大的帮助将是Dare Obasanjo的这份文件,其中列出了两种语言之间的差异:

http://www.25hoursaday.com/CsharpVsJava.html

顺便说一句,将所有 getter 和 setter 方法更改为属性...无需让 C# 库函数与 Java 库相同,除非您要实现完美的接口兼容性。

其他几个值得注意的选项:

  • J#是Microsoft的Java语言在 .NET 上实现。您可以访问 Java 库(最高版本1.4*,无论如何)。*实际上是 Java 1.1.4 用于 java.io/lang, 和 1.2 对于 java.util + 请记住,J# 结束 生活是 ~ 2015-2017 为 J# 2.0 修订版

  • Mono的IKVM也运行Java。CLR,有权访问其他 .NET程序。

  • Microsoft Visual Studio 2005 到来与"Java 语言转换助手"转换 Java程序到 C# 程序自动为您服务。

还有一个快速而肮脏的想法:您可以使用 IKVM 将 Java jar 转换为 .NET 程序集,然后使用 Reflector(与 FileDisassembler Add-in)结合使用,将其反汇编为 Visual C# 项目。

(顺便说一下,我实际上还没有使用过IKVM - 有人愿意保证这个过程会起作用吗?

如果您有少量代码,那么逐行转换可能是最有效的。

如果你有大量的代码,我会考虑:

  1. 寻找一款能为您进行对话的产品。
  2. 编写一个脚本(Ruby或Perl可能是一个很好的候选者)来为你进行转换 - 至少是单调的东西! 它可以是关键字差异和重命名文件的简单搜索/替换。 给你更多的时间/手指来专注于更难的事情。

我不确定这是否真的是逐行转换代码的最佳方式,尤其是在障碍变得势不可挡的情况下。当然,Java代码为您提供了指南和基本结构,但我认为最后最重要的是该库确实提供了与Java相同的功能。