Существует ли эффективный инструмент для преобразования кода C# в код Java? [дубликат]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
85
задан JasonMArcher 3 August 2015 в 15:40
поделиться

11 ответов

Я никогда не встречался с C#-> инструмент преобразования Java. Синтаксис был бы достаточно легок, но платформы существенно отличаются. Даже если бы был инструмент, я категорически не рекомендовал бы его. Я работал над несколькими проектами "миграции" и не могу сказать решительно достаточно, что, в то время как преобразование походит на хороший выбор, проекты преобразования всегда всегда всегда заходят к денежным ямам. Это не ярлык, с чем Вы заканчиваете, код, который не читаем, и не использует в своих интересах выходной язык. при разговоре от личного опыта предположите, что перезапись является более дешевой опцией.

44
ответ дан Michael Meadows 24 November 2019 в 08:23
поделиться

Это неподготовлено, но не является этим, для чего был Кузнечик ?

1
ответ дан Ian Patrick Hughes 24 November 2019 в 08:23
поделиться

Я не уверен, что Вы пытаетесь сделать путем желания преобразовать C# в Java, но если это - .net совместимость, в которой Вы нуждаетесь, Вы могли бы хотеть проверить Моно

1
ответ дан karlipoppins 24 November 2019 в 08:23
поделиться

C# имеет еще несколько функций, чем Java. Возьмите делегатов, например: Много очень простых приложений C# используют делегатов, в то время как люди Java полагают, что шаблон "наблюдатель" был достаточен. Так, для инструмента для преобразования приложения C#, которое использует делегатов, это должно было бы перевести структуру из использования делегатов в реализации шаблона "наблюдатель". Другой проблемой является то, что методы C# не являются виртуальными по умолчанию, в то время как методы Java. Кроме того, Java не имеет способа сделать методы не виртуальными. Это создает другую проблему: приложение в C# могло усилить не виртуальное поведение метода через полиморфизм способом, не переводит непосредственно в Java. Если Вы будете озираться, то Вы, вероятно, найдете, что существует много инструментов для преобразования Java в C#, так как это - более простой язык (не горите меня, я не сказал хуже, я сказал более простой); однако, Вы найдете очень немногих, если любые достойные инструменты, которые преобразовывают C# в Java.

я рекомендовал бы изменить Ваш подход к преобразованию от Java до C#, поскольку это создаст меньше головных болей в конечном счете. Db4Objects недавно выпустил их внутренний инструмент, который они используют для преобразования Db4o в C# общественности. Это называют, Увеличивают резкость. Если Вы регистрируетесь в их сайте, можно просмотреть эту ссылку с инструкциями относительно того, как использовать, Увеличьте резкость: http://developer.db4o.com/Resources/view.aspx/Reference/Sharpen/How_To_Setup_Sharpen

(я был зарегистрирован в них некоторое время и они хороши о не спаме)

3
ответ дан 24 November 2019 в 08:23
поделиться

Попытайтесь посмотреть Net2Java, Это кажется мне наилучшим вариантом для автоматического (или полуавтоматический, по крайней мере) преобразование от C# до Java

4
ответ дан 24 November 2019 в 08:23
поделиться

Существует инструмент от Microsoft для преобразования Java в C#. Поскольку противоположное направление смотрит здесь и здесь . Если это не удается, не должно занимать слишком много времени преобразовывать источник вручную, потому что C# и Java очень похожи,

6
ответ дан Trisped 24 November 2019 в 08:23
поделиться

Они не преобразовывают непосредственно, но это допускает совместимость между.NET и J2EE.

http://www.mainsoft.com/products/index.aspx

3
ответ дан scubabbl 24 November 2019 в 08:23
поделиться

Ну, синтаксис почти такой же, но они полагаются на разные фреймворки, поэтому единственный способ конвертировать - получить кого-то, кто знает оба языка и преобразовать код :) ответ на ваш вопрос - нет не существует "эффективного" инструмента для преобразования c # в java

1
ответ дан 24 November 2019 в 08:23
поделиться

У нас есть приложение, которое нам нужно поддерживать как на C #, так и на Java. Поскольку мы активно поддерживаем этот продукт, одноразовый порт не подходил. Мы исследовали Net2Java и инструменты Mainsoft, но ни один из них не удовлетворил нашим требованиям (Net2Java из-за недостаточной надежности и Mainsoft из-за стоимости и отсутствия преобразования исходного кода). Мы создали наш собственный инструмент под названием CS2J , который запускается как часть нашего сценария ночной сборки и выполняет очень эффективный перенос нашего кода C # на Java. Прямо сейчас этого вполне достаточно для перевода нашего приложения, но предстоит пройти долгий путь, прежде чем он станет полноценным инструментом. Мы передали лицензию на технологию нескольким сторонам со схожими потребностями, и мы играем с идеей опубликовать ее публично, но наш основной бизнес просто слишком загружает нас в наши дни.

30
ответ дан 24 November 2019 в 08:23
поделиться

В этом блоге сообщение предлагает полезные результаты из Tangible .

8
ответ дан 24 November 2019 в 08:23
поделиться

У этих ребят, кажется, есть решение для этого, но я еще не пробовал. Также у них есть демо-версия конвертера.

3
ответ дан 24 November 2019 в 08:23
поделиться