Я хочу добавить метод к существующему классу, в котором я не контролирую, например. имеют метод toList() в классе Stream Java8. Вопрос в том, можно ли это сделать с помощью ASM. Полагаю, что так.Можно добавить метод к существующему классу Java с использованием ASM?
Более конкретный вопрос заключается в том, могу ли я создать нечто вроде банку, содержащего метод расширения (например, для класса Stream). Затем я могу добавить jar в свой проект, и метод toList() станет видимым в классе Java8 Stream. Из того, что я понимаю, метод расширения можно было только соткать во время выполнения или когда у меня есть среда выполнения, которая может это сделать (например, Groovy, Kotlin, Scala). Я знаю, что есть проект Lombok, но он имеет только плагин для eclipse, который поддерживает соответствующую функцию. Плагин для IntelliJ не поддерживает эту специфическую функцию.
, чтобы добавить метод ... очевидным способом было бы расширить класс и добавить этот метод в дочерний класс – Stultuske
Да, это правильно. Я хочу, однако, что-то вроде метода расширения (класс подкласса String не поможет), как в Groovy, Kotlin, Scala, Smalltalk, C# и других языках без необходимости возвращаться к любому из этих языков. – OlliP
Вы не можете подклассифицировать строку, потому что это неизменный класс. Однако вы можете создать составной объект – Stultuske