2010-08-14 30 views
11

Tengo una clase A y BM extiende A. Ahora quiero crear un constructor de B usando la opción de generación de código de eclipse que acepta parámetros y establece valores de todos los campos de B (quiero decir que debería también establece campos heredados de A).cómo generar constructores en eclipse

¿Hay algún atajo para generar dicho código en eclipse?

Respuesta

6

Eclipse (3.5) no tiene construido en la opción para ese caso particular, pero sugeriría que de todas formas que usted tiene un constructor separada en la superclase, que la subclase invoca a través super(...) en su constructor.

Esto sería más fácil de mantener. Si, por ejemplo, agrega un archivo en la súper clase, también deberá recordar actualizar la subclase.

class A { 
    int i; 
    public A(int i) { this.i = i; } 
} 

class B extends A { 
    int j; 
    public B(int i, int j) { 
     super(i); 
     this.j = j; 
    } 
} 
21

Haga clic derecho en el editor y haga clic en "Fuente -> Generar Constructor Uso de los campos". Puede seleccionar el superconstructor a usar y también seleccionar variables de instancia para agregar al constructor.

+1

Pero no generará la inicialización para miembros públicos/protegidos de la superclase, que supongo es lo que busca el OP. – aioobe

+0

@aioobe - de acuerdo, esa fue la principal pista de la pregunta de akshays. –

2

No hay forma automática de hacerlo y estoy cerca de creer que el equipo de eclipse lo hizo a propósito, ya que daría lugar a un mal diseño.

La construcción de una clase se trata de inicializar los objetos propios campos solamente. Si necesita establecer campos (init) en la superclase, llame al constructor de superclases, si necesita cambiar los campos de superclase, llame a los métodos getter y setter de superclases.

Para mí es un mal diseño iniciar campos de superclase y se puede evitar fácilmente.

Cuestiones relacionadas