2015-02-12 4 views
2

Netbeans всегда предполагает, что я должен использовать выражения лямбда, и я знаю, что лямбда - это нечто новое. Так что мне интересно, если я конвертирую код для использования выражения лямбда, будет ли он работать, если я экспортирую его как банку и отправлю его другим людям, а также тем, у кого нет новой установленной Java, и если не то, что произойдет, когда они запускают его?Обратная совместимость лямбда-выражений?

enter image description here

И при создании школьных проектов, я посылаю проект Netbeans, и есть шанс, что один, который будет тестировать свой код не последнюю версию. Как вы думаете, я должен использовать лямбда-выражения?

Мне нравится этот чистый и простой код, но я хочу, чтобы он работал везде.

+0

вы должны согласиться с получателями ваших бинарных файлов на целевой версии JVM, то вы можете использовать любой, что VM поддерживает. (обратите внимание, что вы можете настроить свою компиляцию для этого целевого vm, в этом случае ваш идеал не будет отображать предупреждения в первую очередь) – A4L

+3

Если вы скомпилируете свои классы с помощью JDK 8 и используете Java 8-функции, такие как лямбда-выражения, то это только если эти люди также используют Java 8. Они не смогут использовать ваши классы, если они используют более старую версию Java. – Jesper

ответ

2

Если вы используете его в школе, это значит, что, возможно, у вашего учителя также есть Java 8. Не стесняйтесь использовать lambda expressions, если вы чувствуете, что это делает ваш код короче.

Если вы позволите Netbeans 8 преобразовать это в выражение лямбда, вы получите что-то вроде submitButton.addActionListener(e -> {doStuff();}). Это functionally equivalent. Буквально на e -> {doStuff();} вы имеете в виду «сделать меня объектом класса с функцией e, который соответствует типу аргумента, ActionEvent и имеет тело doStuff».

Лямбда-выражения являются чрезвычайно мощным (и прохладный) functional programming API в Java 8.

+0

Когда я взял класс компьютерной науки, у меня были последние Java и Netbeans на моем компьютере, но мой учитель и другие школьные машины этого не сделали, поэтому мне пришлось вернуться к старомодному синтаксису. –

+1

Это не функционально эквивалентно некоторым незначительным образом (например, 'new' гарантирует создание нового объекта, тогда как lambda может создать новый объект или вернуть существующий объект), которые не важны в большинстве случаев. – newacct

+0

@newacct Так как 'String', в принципе. –

Смежные вопросы