Генерировать строки `Objects.requireNonNull` для каждого аргумента автоматически в IntelliJ? - PullRequest
0 голосов
/ 05 января 2019

Может ли быть способ в IntelliJ 2018 автоматически генерировать строки кода, проверяющие нулевые значения, передаваемые в любом аргументе?

Я хочу, чтобы IntelliJ изменил это:

// ----------|  Constructor  |-----------------------------------
public DailyProduct ( LocalDate localDate , String name , Integer quantity ) {
    this.localDate = localDate;
    this.name = name;
    this.quantity = quantity;
}

… к этому:

// ----------|  Constructor  |-----------------------------------
public DailyProduct ( LocalDate localDate , String name , Integer quantity , BigDecimal quality , BigDecimal realmq , BigDecimal cost ) {
    Objects.requireNonNull( localDate );  // ⬅ Generate these checks for null values.
    Objects.requireNonNull( name );
    Objects.requireNonNull( quantity );

    this.localDate = localDate;
    this.name = name;
    this.quantity = quantity;
}

Еще лучше было бы, если бы IntelliJ мог написать все присвоения аргумента члену , а использовать Objects.requireNonNull. Итак, это:

// ----------|  Constructor  |-----------------------------------
public DailyProduct ( LocalDate localDate , String name , Integer quantity , BigDecimal quality , BigDecimal realmq , BigDecimal cost ) {
}

… станет таким:

// ----------|  Constructor  |-----------------------------------
public DailyProduct ( LocalDate localDate , String name , Integer quantity ) {
    this.localDate = Objects.requireNonNull( localDate );  // ⬅ Generate all these lines entirely.
    this.name = Objects.requireNonNull( name );
    this.quantity = Objects.requireNonNull( quantity );
}

1 Ответ

0 голосов
/ 05 января 2019

Вы можете попробовать следующее:

В настройках / Live template создайте новый живой шаблон

enter image description here

определить переменную $ content $ с ​​помощью [Редактировать переменные]:

enter image description here

со следующим groovyScript:

groovyScript ("def params = _1.collect {'this.' + It + '= Objects.requireNonNull (' + it + ');'} .join (); params", methodParameters ());

теперь, когда вы используете сокращение

enter image description here

вы должны получить следующее

enter image description here

Дайте мне знать, если это поможет.

...