Этот ответ направлен на решение вопроса о клонировании JsonParser, предполагая, что это необходимо.
com.faster xml .jackson.core.JsonParser является опубликованной c аннотацией класс, и он не обеспечивает клон или подобный метод. Абстрактный класс может быть расширен за счет различных реализаций, которые автор JsonParser. java не контролирует. Точно так же не безопасно клонировать JsonParser в качестве аргумента void parseEntities(JsonParser parser);
, поскольку автор parseEntities
не может быть уверен, какая реализация используется и может ли она быть клонирована.
Однако, если вы (как автор из parseEntities
) действительно имеют контроль над используемыми реализациями, тогда можно безопасно клонировать известные реализации (при условии, что это возможно). Поэтому, если вы знаете, какую конкретную c реализацию (или реализацию) JsonParser будет использовать ваш класс, вы можете попробовать клонировать конкретно эти известные реализации. Например, добавьте и внедрите один или несколько методов (при необходимости), таких как:
void parseEntities(MyJsonParser parser);
void parseEntities(MyOtherJsonParser parser);
Тогда возникает вопрос клонирования указанных c реализации JsonParser, которые используются. Например, если предположить, что MyJsonParser
поддерживает клонирование, может быть допустимо следующее.
void parseEntities (MyJsonParser parser) {
MyJsonParser clonedParser = parser.clone (); // зависит от реализации
...
}