Как массово аннотировать аргументы конструктора?
У меня есть проблема, когда я хочу сделать множество классов в нашем проекте десериализованными через Джексона. Проблема в том, что большинство классов выглядят так:
public class FinalFieds{
private final String field;
private final String secondField;
public FinalFieds(String field, String secondField)
{
this.field = field;
this.secondField = secondField;
}
public String getField()
{
return field;
}
public String getSecondField()
{
return secondField;
}
}
Итак, я обнаружил, что в Джексоне вы можете сделать что-то вроде этого:
public FinalFieds(@JsonProperty("field") String field, @JsonProperty("secondField") String secondField)
И это хорошо работает. Проблема в том, что я не могу сделать структурную замену в Intellij, чтобы работать на меня. Когда я пытаюсь:
Все мои совпадения находятся в разделе "Несекретные совпадения". Кроме того, когда я пытаюсь заменить, Intellij просто удаляет конструктор из класса.
Любая идея о том, что я делаю неправильно или это известная ошибка в intellij?
Даже слишком сложное регулярное выражение, которое поможет мне заменить это (для конструкторов с одним аргументом я могу создать его сам; проблема в том, что наши конструкторы в этих классах имеют конструкторы с несколькими аргументами).
1 ответ
Это ошибка или отсутствующая функция в зависимости от того, как вы на нее смотрите. https://youtrack.jetbrains.com/issue/IDEA-141143
Однако это можно сделать в два этапа. Сначала найдите параметры конструктора, которые вы хотите аннотировать:
class $Class$ implements OurCommonInterface {
$Class$($Type$ $parameter$);
}
где $parameter$
мин: 1
Максимум: unlimited
, This variable is target of the search
проверено.
Затем замените параметр аннотированным параметром в области видимости. Previous Search Results
:
$Type$ $parameter$
Шаблон замены:
@JsonProperty("$parameter$") $Type$ $parameter$