Я копал через байт-код выражения lambda выражения Java как скомпилированный моим компилятором OpenJDK, и мне интересно, может ли байт-код выражения лямбда варьироваться в зависимости от компилятора/времени выполнения? Я хотел бы знать, что моя инспекционная логика будет работать на разных платформах или нет.Java 8 lambda expression bytecode consistency
1
A
ответ
4
Может ли байт-код выражения лямбда варьироваться в зависимости от компилятора/времени выполнения?
В теории да. JLS НЕ указывает, что должны быть созданы конкретные байт-коды/последовательности.
Вам нужно будет проверить байт-коды, испускаемые существующими Java 8 & Java 9 компиляторами, чтобы узнать, насколько они отличаются. (И это не говорит о компиляторах/версиях, которые еще не написаны!)
Я хотел бы знать, что моя инспекционная логика будет работать на разных платформах или нет.
Решение должно заключаться в создании комплексного набора тестовых примеров и их запусках против кода, созданного всеми компиляторами Java, которые вы хотите поддерживать.
Вкратце: протестируйте его.
Смежные вопросы
- 1. Java 8 --- Lambda Expression
- 2. Java-8 Lambda expression - Функциональный Тип интерфейса
- 3. Lambda Expression Java Conversion
- 4. Слияние потоков карт с использованием Java 8 Lambda Expression
- 5. Lambda Expression
- 6. Lambda Expression
- 7. Java 8 Перегрузка Lambda
- 8. Java 8 lambda api
- 9. Как Lambda Expression работает
- 10. Необработанное IOException внутри Java List.stream.forEach Lambda Expression
- 11. min/max lambda expression in java
- 12. Lambda select many expression
- 13. VB.Net Lambda Expression
- 14. LINQ Vs. Lambda Expression
- 15. Lambda Expression Параметры/декларация
- 16. C# Lambda expression -Help
- 17. Linq Lambda Expression
- 18. Lambda expression Where where
- 19. Lambda expression throws System.MissingMemberException
- 20. Сформировать Lambda Expression
- 21. Lambda Expression без АргументЪ
- 22. Mock Lambda Parameterless Expression
- 23. Slow Lambda Expression
- 24. Case in Lambda Expression
- 25. C# Lambda Expression Speed
- 26. Lambda expression - Читать db
- 27. Count in lambda expression
- 28. AddHandler Lambda Expression
- 29. Lambda Expression: == vs. .Equals()
- 30. C# Lambda Expression Помощь
Что именно вы пытаетесь проверить? Обратите внимание, в частности, что если компилятор Groovy 3 выходит из-под земли, поддерживая Java-8-стильные лямбды, он, вероятно, испустит * значительно * другой байт-код. – chrylis
javac openjdk - не единственный java-компилятор, ecj - обычно используемая альтернатива, например. – the8472