¿Hay alguna manera de generar automáticamente getters y setters en Eclipse?

256

Estoy trabajando en un nuevo Androidproyecto ( Java) y creé un objeto con una gran cantidad de variables. Como estoy planeando agregar captadores y establecedores para todos ellos, me preguntaba: ¿hay un atajo Eclipsepara generar automáticamente los captadores y establecedores en una clase determinada?

Phil
fuente
1
A mí me parece un acosador ... Solía ​​hacer toda la programación de Java sin un IDE, por lo que usar Eclipse todavía es relativamente nuevo para mí.
Phil
3
@krio: todo el mundo no usa Eclipse para desarrolladores de Java. Hice la mayor parte de mi trabajo en IntelliJ, y me encontré haciendo muchas preguntas como esta una vez que comencé a trabajar en Eclipse.
vcsjones
1
@ Phil, vcsjones: mis disculpas son muy ciertas, pero mira esto, google.com.au/… . Supongo que stackoverflow dice que la investigación es importante
TeaCupApp
2
es la forma más rápida: Ctrl + 3 ggas
dellasavia
1
@Konstantin que solo dice que evite usarlos en la misma clase, así que no llame this.getCount(), cuando solo puede hacer referencia this.mCount. Aunque puede ser una operación más costosa, es un enfoque más limpio para proporcionar acceso a variables de otros objetos a través de getters y setters.
Phil

Respuestas:

357

Abra el menú contextual (es decir, haga clic con el botón derecho) en la ventana del código fuente de la clase deseada. Luego seleccione el Sourcesubmenú; al seleccionar ese menú Generate Getters and Setters..., aparecerá una ventana del asistente.

Source -> Generate Getters and Setters...

Seleccione las variables para las que desea crear captadores y establecedores y haga clic OK.

Hagai Cibulski
fuente
Solo hay 'Generar comentario de elemento', no Getters y Setters. Estoy usando Eclipse 4.4.0, el complemento PDT instalado. Mientras tanto, esto se puede usar: mikeangstadt.name/projects/getter-setter-gen .
Xdg
Funciona muy bien en Eclipse Mars.2 Release (4.5.2). Gracias.
this.user3272243
¡Gracias por salvarme de un millón de años de tedio!
Jay Edwards
11
También puede acceder a este submenú con el atajo de teclado SHIFT+ ALT+ S, y luego abrir las opciones Generar captadores y configuradores presionando R.
Rosa
Es curioso cómo mi respuesta aquí se hizo tan popular, pero en estos días solo usaría Lombok , como lo señalan otros a continuación.
Hagai Cibulski el
70

En Eclipse Juno, de forma predeterminada, ALT + MAYÚS + S, R abre el cuadro de diálogo getter / setter. Tenga en cuenta que debe presionar las 4 teclas.

RoboAlex
fuente
55
Puede omitir la parte SHIFT y simplemente hacer ALT + S, R también.
Jason Wheeler
2
No se puede dejar de lado SHIFTen Eclipse Kepler
yellavon
Puedes dejarlo SHIFTen Eclipse Oxygen.
Jake Reece
No se puede dejar de lado SHIFTen Eclipse 2018-12.
Neph
69

Right click -> Source -> Generate setters and getters

Pero para hacerlo aún más conveniente, siempre asigno esto a ALT + SHIFT+ GdesdeWindows -> Preferences -> General -> Keys

Bozho
fuente
2
¡Realmente util! Yo uso la misma asignación de teclas.
Ángel Carlos del Pozo Muela
41

Todas las otras respuestas se centran solo en el nivel IDE, estas no son la forma más efectiva y elegante de generar captadores y establecedores. Si tiene decenas de atributos, los métodos getters y setters relevantes harán que su código de clase sea muy detallado.

La mejor manera que he usado para generar getters y setters automáticamente es usando anotaciones del proyecto lombok en su proyecto java , lombok.jar generará el método getter y setter cuando compile el código java.

Solo se enfoca en los atributos de clase / nombre y definición de variables, lombok hará el resto. Esto es fácil de mantener su código.

Por ejemplo, si desea agregar el método getter y setter para la agevariable, simplemente agregue dos anotaciones lombok:

@Getter @Setter 
public int age = 10;

Esto es igual a un código como ese:

private int age = 10;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

Puede encontrar más detalles sobre lombok aquí: Proyecto Lombok

dongpf
fuente
1
¡Eso es! ¡Muchas gracias! En realidad, su respuesta debe estar en la parte superior, ya que lombok es la única solución verdadera para evitar ver todo el código Java repetitivo que uno tendría que generar o escribir. ¡Gracias!
Stefan Endrullis
2
El Proyecto Lombok (o al menos la idea) debería ser parte de Java 11. Yo uso Kotlin para las clases de Pojo solo para escapar de la generación del setter: /
Wolf359
31

Formas de generar captadores y setters -

1) Presione Alt+ Shift+ S, luegoR
2) Haga clic con el botón derecho -> Fuente -> Generar captadores y configuradores
3) Vaya al menú Fuente -> Generar captadores y configuradores
4) Vaya al menú Windows -> Preferencias -> General -> Teclas (Escribir Generar Getters & Setters en el campo de texto)
5) Haga clic en la bombilla de error del campo -> crear getters & setters ...
6) Presione Ctrl+3 y escriba getters & setters en el campo de texto y luego seleccione la opción Generar Getters & Setters

si Mac OS presiona Alt + cmd + S, luego selecciona Getters & Setters

Deepak Gupta
fuente
2
Creo que 1 es un poco más fácil de esta manera: 1) Presione Alt + Shift + S, luego R
Paco Abato
1
Presionar Ctrl-3 y directamente después escribir "getter" no se encuentra en la lista. Mucho más fácil de recordar que los accesos directos específicos, ya que esto funciona para cada comando, vista, etc.
Bananeweizen
@ Bananeweizen - Gracias
Deepak Gupta
11

Hacer clic con el botón derecho-> generar captadores y establecedores funciona bien, pero si desea crear un método abreviado de teclado en eclipse en Windows, puede seguir los siguientes pasos:

  1. Vaya a Ventana> Preferencias
  2. Vaya a General> Teclas
  3. Lista para "Asistencia rápida: crear captador / definidor para el campo"
  4. En el campo de texto "Enlace" a continuación, mantenga presionadas las teclas deseadas (en mi caso, uso ALT + MAYÚS + G)
  5. Presiona Aplicar y Ok
  6. Ahora en su editor de Java, seleccione el campo para el que desea crear métodos getter / setter y presione el acceso directo que configuró en el Paso 4. Presione ok en esta ventana para crear los métodos.

¡Espero que esto ayude!

sufinawaz
fuente
9

Por supuesto.

Use Generar captadores y establecedores del menú Fuente o del menú contextual en un campo o tipo seleccionado, o una selección de texto en un tipo para abrir el cuadro de diálogo. El cuadro de diálogo Generar captadores y establecedores muestra captadores y establecedores para todos los campos del tipo seleccionado. Los métodos se agrupan por los campos del tipo.

Consulte la documentación de ayuda para obtener más información.

vcsjones
fuente
8

Si. Haga clic derecho en el código y verá un menú emergente; hay "Fuente", "Generar captadores y establecedores" y al lado puedes ver el acceso directo, que es Alt + Shift + S y R en mi sistema.

De manera similar, puede navegar a otros submenús en ese menú principal, al escribir el atajo apropiado irá directamente al submenú en lugar del menú contextual principal, y luego podrá elegir del menú o escribir otra letra para elegir de la lista.

Zds
fuente
8

En Mac OS , Alt+Cmd+Sseleccione "... Getters and Setters"

Alexander Volkov
fuente
7

Prefiero crear el campo privado primero

private String field;

Eclipse resaltará automáticamente la variable, colocando el cursor sobre su nueva variable, presione Ctrl + 1. Luego le dará el menú para Crear getter y setter.

Presiono Ctrl + 1 porque es un poco más inteligente sobre lo que creo que quieres después.

David Chiew
fuente
5

Presione Alt + Mayús + S + R ... y luego solo seleccione qué campos tiene para generar Getters o Setters o ambos

Sagar Sawant
fuente
5
  • Para todas las variables ALT + MAYÚS + S Luego R y para seleccionar todas Presione ALT + A

  • Para el cursor de punto de variable única en la variable, presione CTRL + 1 y vaya a la segunda opción de sugerencias

Captura de pantalla

Rohit Mewada
fuente
Gracias, esto es lo que estaba buscando.
Shams Nahid
4

Hay un jar de código abierto disponible conocido como Lombok , simplemente agrega jar y luego anota tu POJO con @Getter & @Setter , creará getters y setters automáticamente.

Además de esto, podemos usar otras características como @ToString , @EqualsAndHashCode y otras cosas interesantes que eliminan el código vainilla de su aplicación

rajadilipkolli
fuente
3

Eclipse> Fuente> Generar captadores y establecedores

usuario2332195
fuente
3

** En Eclipse Ide

para generar tanto setters como getters -> alt + shift + s + r luego Alt A y luego haga clic en ok;

para generar solo getters -> alt + shift + s + r luego presione g y luego haga clic en el botón ok;

para generar solo setters -> alt + shift + s + r luego presione l luego haga clic en el botón ok; **

abhinav
fuente
2

Haga clic derecho en la propiedad para la que desea generar el captador y definidores y elija

Source -> Generate Getters and Setters...
Eduardo Dennis
fuente
2

1) Vaya a Windows-> Preferencias-> General-> Teclas

2) Seleccione command" Generar captadores y establecedores "

3) En el Binding, presiona el atajo para usar (como Alt + Shift + G )

4) Haz clic en Aplicar y listo.

Prateek Joshi
fuente
1
  1. Abra el archivo de clase en Eclipse
  2. Haga doble clic en el nombre de la clase o resáltelo
  3. Luego navegue a Fuente -> Insertar código
  4. Haga clic en Getter y Setter

Abre una ventana emergente para seleccionar los campos para los que se generarán los métodos getter / setter. Seleccione los campos y haga clic en el botón "Generar". ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

Vallabha Vamaravelli
fuente
1

Usa el Proyecto Lombok o mejor Kotlin para tus Pojos.

(Además, para agregar Kotlin a tu currículum;))

Esta :

public class BaseVO {
    protected Long id;

    @Override
    public boolean equals(Object obj) {
        if (obj == null || id == null)
            return false;

        if (obj instanceof BaseVO)
            return ((BaseVO) obj).getId().equals(id);

        return false; 
    }

    @Override
    public int hashCode() {
        return id == null ? null : id.hashCode();
    }
    // getter setter here
}

public class Subclass extends BaseVO {
    protected String name;
    protected String category;
    // getter setter here
}

se convertiría en esto:

open class BaseVO(var id: Long? = null) {

    override fun hashCode(): Int {
        if (id != null)
            return id.hashCode()

        return super.hashCode()
    }

    override fun equals(other: Any?): Boolean {
        if (id == null || other == null || other !is BaseVO)
            return false

        return id.hashCode() == other.id?.hashCode()
    }
}

@Suppress("unused")
class Subclass(
        var name: String? = null,
        var category: String? = null
) : BaseVO()

O use las clases de "datos" de Kotlin. Terminas escribiendo incluso menos líneas de código.

Wolf359
fuente