IntelliJ IDEA: forma sencilla de crear constructor de tipo seguro y sin plugins?

esquiladas:

El uso de IntelliJ IDEA, quiero crear una clase POJO que me ayuda a evitar cometer errores tontos, en términos de conseguir los parámetros de todo el camino equivocado.

  • No me importa acerca de otros entornos de desarrollo
  • No quiero utilizar cualquier forma de reflexión (es decir, sin Lombok o similar)
  • No importa el estándar JavaBean
  • Yo no se preocupan por "mejores prácticas"

Sólo quiero crear una clase, declarar algunos campos y tienen una forma conveniente de crear dicha clase que reduce la probabilidad de que voy a obtener los parámetros del mismo tipo la ronda de manera incorrecta cuando se crea la clase.

A partir de esto:

public class TestObject {
  public String x;
  public String y; 
}

Quiero generar algo que pueda usar, como este:

TestObject o = new TestObject().setX("x").setY("y");

o esto:

TestObject o = TestObjectBuilder.withX("x").withY("y").build();

No me importa si hay una clase separada constructor (prefieren atasco de todos los métodos de la clase original, pero no es problema).

No me importa si hace muchas copias a lo largo del camino. Preferiría que todo el proceso crea sólo 1 instancia, al igual que mi solución a continuación; pero si la solución toma un enfoque inmutable ejemplo-por-colocador de campo - que no es problema.


Esto es lo que actualmente hago para lograr este objetivo.

(1) Uso IDEA a Generate constructor, la selección de todos los campos, lo que resulta en este:

public class TestObject {
  public String x;
  public String y;

  public TestObject(String x, String y) {
    this.x = x;
    this.y = y;
  }
}

(2) Refactor Constructor with Builder , teniendo que seleccione Use existing, a continuación, copiar / pegar el TestObjectnombre en el campo, porque ¿por qué no, lo que resulta en:

public class TestObject {
  public String x;
  public String y;

  public TestObject(String x, String y) {
    this.x = x;
    this.y = y;
  }

  public TestObject setX(String x) {
    this.x = x;
    return this;
  }

  public TestObject setY(String y) {
    this.y = y;
    return this;
  }

  public TestObject createTestObject() {
    return new TestObject(x, y);
  }
}

(3) eliminar manualmente el constructor (debido a que su presencia niega el uso de la ctor por defecto) y borrar el método createTestObject () (porque es superflua, Java me da un método clone de forma gratuita). Dejándome con esta pequeña belleza, que es todo lo que quería en primer lugar:

public class TestObject {
  public String x;
  public String y;

  public TestObject setX(String x) {
    this.x = x;
    return this;
  }

  public TestObject setY(String y) {
    this.y = y;
    return this;
  }
}

¿Qué le parece, Obi-wan Pila-desbordamiento, hay una manera de hacer esto con menos Pfaffing acerca?

Otra cosa que me gustaría ser capaz de hacer es añadir campos con menos Pfaffing aproximadamente. Por el momento, cuando agrego un campo que estoy haciendo generate setterla modificación del resultado con la mano para estar en línea con los otros emisores - hay una mejor manera de hacer eso?

amseager:

Si es posible.

  1. Pulse Alt-Insert (o "Código" -> "Generar") para abrir "Generar" del menú
  2. Seleccionar Setter.
  3. En la siguiente ventana seleccione "Constructor" en el menú desplegable de la parte superior se llama "plantilla" (por defecto de "intellij defecto" allí).

Usted va a lograr exactamente el mismo resultado que desea.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=211532&siteId=1
Recomendado
Clasificación