Структурная замена Intellij нежелательного поведения в зависимости от целиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Структурная замена Intellij нежелательного поведения в зависимости от цели

Сообщение Anonymous »

Я пытаюсь найти и заменить все случаи использования @JsonCreator в нестатических методах, используя проверку, чтобы предложить замену метода, чтобы сделать его статическим. У меня есть следующий шаблон:

Код: Выделить всё

// Search template

@$Annotation$
$MethodType$ $Method$($ParameterType$ $Parameter$)

/** Modifiers
* Annotation{count=[1, inf], text=JsonCreator}
* Method{Script=!__context__.hasModifierProperty("static")}
* Parameter{count=[0, inf]}
*/

// Replace template

@$Annotation$
static $MethodType$ $Method$($ParameterType$ $Parameter$)

/** Modifiers
* Annotation{count=[1, inf], text=JsonCreator}
* Method{Script=!__context__.hasModifierProperty("static")}
* Parameter{count=[0, inf]}
*/
Когда целью поиска является полное совпадение или метод, это работает по желанию, выполняя следующие действия:

Код: Выделить всё

// Before
@JsonCreator
BasicEnum fromString(String value)
{
// ...
}

// After
@JsonCreator
static BasicEnum fromString(String value)
{
// ...
}
Однако, когда целью является аннотация, происходит сбой, вместо этого выполняется следующее:

Код: Выделить всё

// Before
@JsonCreator
BasicEnum fromString(String value)
{
// ...
}

//After
BasicEnum fromString(String value)
{
// ...
}
Он удаляет аннотацию и не добавляет статический модификатор.
Я бы хотел, чтобы целью была аннотация, так как получение предупреждающих закорючек по всему методу кажется неуклюжим. Почему замена не выполняется при выборе аннотации? Есть ли способ обойти это, чтобы волнистые линии отображались только в аннотации?
Отмечу, что я знаю, что @JsonCreator также можно использовать в методах конструктора, но управление ими — это не то, что меня сейчас беспокоит. Я просто хочу найти ситуации, когда @JsonCreator используется в нестатическом методе, и предоставить проверку для замены.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -on-target
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»