当前位置:  开发笔记 > 编程语言 > 正文

我在哪里可以找到Java到C#转换器?

如何解决《我在哪里可以找到Java到C#转换器?》经验,为你挑选了6个好方法。

我需要将Java 1.5se应用程序转换为C#2.0.

有没有人知道这样做的工具(最好是免费/开源)?



1> Jon Skeet..:

即使有这样的工具,我强烈建议您手动进行转换.自动转换器通常会忠实地重现代码,但忽略了成语 - 因为它们真的很难做到.

此外,.NET和Java中的泛型之间的差异可能导致两个代码库中的一些非常不同的决策.

真的,你最好手工做.



2> alfdev..:

一个很好的工具叫做Sharpen,它是开源的.

此工具已被分叉并通过Xamarin团队更新,他们用它来翻译了Android的API为C#.他们的副本可以在这里找到:

XobotOS /锐化GitHub(Mono的Xamarin团队)


Mono团队刚刚发布了一个新版本的Sharpen,用于将Android转换为C#.https://github.com/xamarin/XobotOS

3> Rasmus Faber..:

Java语言转换助手.(可选)安装(至少)Visual Studio 2005标准版.

选择文件/打开/转换/ Java语言转换助手.

请记住之后手动检查代码.它会有很多问题.


它不仅会在实现级别出现问题,而且不会以.NET惯用的方式设计.我再说一次,手动移植......
总是需要手动转换,但很多代码都可以按原样进行转换.替换使用final,checked异常和synchronized的小语法差异在移植时有很长的路要走.
JLCA已停产,请参见http://stackoverflow.com/questions/3070261/where-is-the-java-language-conversion-assistant-jlca-3-0

4> 小智..:

ikvm在.NET中公开java类.它不是转换器,但根据我的经验,我建议任何人从java转换到.NET



5> Carlo V. Dan..:

虽然这两种语言的语法看起来很相似,但语义却大相径庭.提到一些地方,这两种语言误入歧途

泛型,Java将所有内容编译为对象,C#保留泛型类型

例外,Java已经检查了异常,C#没有

匿名类和内部类,Java有匿名类和嵌套类,C#都没有.相反,C#有委托和事件.因此编程模型非常不同

委托,C#具有函数指针的概念,这导致了不同的编程方式.

事件,C#具有导致不同编程方式的事件和组件的概念.

API,将所有语义差异放在一边,两个语言都包含巨大的API,两者都没有被轻易转换.

换句话说,您将无法自动进行此类转换.如果更改为C#的原因是为了能够将代码转换为.exe文件,那么Java市场中也有各种选项.



6> magallanes..:

现在,我正在测试有形解决方案(这不是免费的)

有形源转换器

它还增加了一个Class Helper.但在它之外,结果看起来很好.

Java :(原创)

public class PackVariableArrays {


private ClassError myerror=new ClassError();


public VariableArrays unpack(String txt) {
    VariableArrays pc = new VariableArrays();
    Variable lc;
    txt=txt.replace("\r\n","\n");
    setMyerror(new ClassError());
    if (txt==null) {
        lc=new Variable();
        lc.name="ERV-5: Empty values";
        pc.addItem(lc);

        return pc;
    }
    String[] linecode = txt.split(ClassUtil.SEPARATOR2);
    int blen = 0;
    int tmpint = 0;

    int numelement = 9999;

C#(转换)

public class PackVariableArrays {


    private ClassError myerror =new ClassError();


    public virtual VariableArrays unpack(string txt) {
        VariableArrays pc = new VariableArrays();
        Variable lc;
        txt=txt.Replace("\r\n","\n");
        Myerror = new ClassError();
        if (txt==null) {
            lc=new Variable();
            lc.name="ERV-5: Empty values";
            pc.addItem(lc);

            return pc;
        }
        string[] linecode = StringHelperClass.StringSplit(txt, ClassUtil.SEPARATOR2, true);
        int blen = 0;
        int tmpint = 0;

        int numelement = 9999;

这是一个简单的案例,但它工作正常.但是,正如我早期所说,它使用了一个很好的类助手(StringHelperClass.StringSplit),但它是不必要的.在它之外,结果代码非常清楚.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有