Java - Instanciar un objeto con enumerados

 
Vista:
sin imagen de perfil
Val: 25
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Instanciar un objeto con enumerados

Publicado por Juan Ignacio (18 intervenciones) el 03/07/2018 12:07:04
Hola a todos tengo una clase Articulo y otra clase que hereda de Articulo llamada Película. La clase Película tiene Enumerados.

Cuando quiero crear un objeto de Película no se como hacerlo.
Cuando pongo :
Pelicula objPelicula = new Pelicula(tipo,Integer.parseInt(this.txtDuracion.getText()),id,this.txtTitulo.getText(),
mas18,alquilado)
Me da error y pone "incompatible types: TipoPelicula cannot be converted to Tipo"
Os mando las clases para que veáis como lo tengo echo.

Haber si alguien me puede ayudar.

Muchas Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
public class Articulo {
 
private int identificador;
private String nombre;
private boolean mas18;
private boolean alquilado;
 
public int getIdentificador() {
return identificador;
}
 
public void setIdentificador(int identificador) {
this.identificador = identificador;
}
 
public String getNombre() {
return nombre;
}
 
public void setNombre(String nombre) {
this.nombre = nombre;
}
 
public boolean isMas18() {
return mas18;
}
 
public void setMas18(boolean mas18) {
this.mas18 = mas18;
}
 
public boolean isAlquilado() {
return alquilado;
}
 
public void setAlquilado(boolean alquilado) {
this.alquilado = alquilado;
}
 
public Articulo(int identificador, String nombre, boolean mas18, boolean alquilado) {
this.identificador = identificador;
this.nombre = nombre;
this.mas18 = mas18;
this.alquilado = alquilado;
}
 
}
 
public class Pelicula extends Articulo{
 
 
private enum Tipo{
DVD, BluRay
}
 
private Tipo tipo;
private int duracion;
 
public Tipo getTipo() {
return tipo;
}
 
public void setTipo(Tipo tipo) {
this.tipo = tipo;
}
 
public int getDuracion() {
return duracion;
}
 
public void setDuracion(int duracion) {
this.duracion = duracion;
}
 
public Pelicula(Tipo tipo, int duracion, int identificador, String nombre, boolean mas18, boolean alquilado) {
super(identificador, nombre, mas18, alquilado);
this.tipo = tipo;
this.duracion = duracion;
}
 
}
 
public class AltaPeliculas extends javax.swing.JDialog {
 
int id;
 
/**
* Creates new form ALtaPeliculs
*/
public AltaPeliculas(java.awt.Frame parent, boolean modal) throws Exception {
super(parent, modal);
initComponents();
 
this.setLocationRelativeTo(null);
this.setTitle("ALTA DE PELICULAS");
idMax();
}
 
private void idMax() throws Exception {
this.id = ArticulosDAO.numeroId() + 1;
this.txtId.setText(String.valueOf(id));
}
 
public enum TipoPelicula{
DVD, BluRay
}
 
private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
TipoPelicula tipo = null;
boolean mas18 = false;
boolean alquilado = false;
 
if (this.txtTitulo.getText().length() != 0 && this.txtDuracion.getText().length() != 0) {
if (this.rbtAlquiladoSi.isSelected()) {
alquilado = true;
}
if (this.rbtMayoresSi.isSelected()) {
mas18 = true;
}
if (this.rbtFormatoDVD.isSelected()) {
tipo = TipoPelicula.DVD;
 
}else{
tipo = TipoPelicula.BluRay;
}
try {
 
Articulo objArticulo = new Articulo(id, this.txtTitulo.getText(), mas18, alquilado);
Pelicula objPelicula = new Pelicula(tipo,Integer.parseInt(this.txtDuracion.getText()),id,this.txtTitulo.getText(),mas18,alquilado);
ArticulosDAO.insertar(objArticulo);
} catch (Exception ex) {
Logger.getLogger(AltaPeliculas.class.getName()).log(Level.SEVERE, null, ex);
}
 
}
 
 
}
 
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.setVisible(false);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de kingk
Val: 15
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Instanciar un objeto con enumerados

Publicado por kingk (108 intervenciones) el 03/07/2018 17:50:18
Hola, puedes colocarlo asi:
1
2
3
4
5
6
7
8
Pelicula objPelicula = new Pelicula(tipo,Integer.parseInt(this.txtDuracion.getText()),id,this.txtTitulo.getText(),
mas18,alquilado)
 
public Pelicula(TipoPelicula tipo, int duracion, int identificador, String nombre, boolean mas18, boolean alquilado) {
super(identificador, nombre, mas18, alquilado);
this.tipo = this.tipo.values(tipo.ordinal());
this.duracion = duracion;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Instanciar un objeto con enumerados

Publicado por Juan (18 intervenciones) el 03/07/2018 18:27:05
Gracias por contestar Kingk, pero me sigue dando error.

Película objPelicula = new Película(tipo....)

en este tipo me da el siguiente error:

"incompatible types: ES.Juan.AltaPeliculas.TipoPelicula cannot be converted to Clases.Pelicula.TipoPelicula"

Alguna idea?.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Instanciar un objeto con enumerados

Publicado por Tom (1523 intervenciones) el 03/07/2018 21:19:06
¿ Por qué defines dos tipos enumerados distintos para contener los mismos valores ?
Usa solamente una clase (Tipo o TipoPelicula) y te ahorrarás estos problemas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Instanciar un objeto con enumerados

Publicado por Juan (18 intervenciones) el 04/07/2018 07:38:32
Gracias por contestar. Me gustaría ir por partes para intentar entenderos. Estas son las clases Articulo y Película. Están bien así?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public class Articulo {
 
    private int identificador;
    private String nombre;
    private boolean mas18;
    private boolean alquilado;
 
    public int getIdentificador() {
        return identificador;
    }
 
    public void setIdentificador(int identificador) {
        this.identificador = identificador;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
    public boolean isMas18() {
        return mas18;
    }
 
    public void setMas18(boolean mas18) {
        this.mas18 = mas18;
    }
 
    public boolean isAlquilado() {
        return alquilado;
    }
 
    public void setAlquilado(boolean alquilado) {
        this.alquilado = alquilado;
    }
 
    public Articulo(int identificador, String nombre, boolean mas18, boolean alquilado) {
        this.identificador = identificador;
        this.nombre = nombre;
        this.mas18 = mas18;
        this.alquilado = alquilado;
    }
 
}
 
public class Pelicula extends Articulo{
 
 
    private enum TipoPelicula{
        DVD, BluRay
    }
 
    private TipoPelicula tipo;
    private int duracion;
 
    public TipoPelicula getTipo() {
        return tipo;
    }
 
    public void setTipo(TipoPelicula tipo) {
        this.tipo = tipo;
    }
 
    public int getDuracion() {
        return duracion;
    }
 
    public void setDuracion(int duracion) {
        this.duracion = duracion;
    }
 
    public Pelicula(TipoPelicula tipo, int duracion, int identificador, String nombre, boolean mas18, boolean alquilado) {
        super(identificador, nombre, mas18, alquilado);
        this.tipo = tipo;
        this.duracion = duracion;
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Instanciar un objeto con enumerados

Publicado por Tom (1523 intervenciones) el 04/07/2018 08:01:01
Aparentemente sí, dependerá de todo lo demás que quieras hacer. Por ejemplo el enumerado DVD, BluRay, no creo que se aplique solamente a películas, podría aplicarse también a juegos. Yo lo denominaría TipoSoporte (o algo así) y lo usaría como atributo del Articulo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kingk
Val: 15
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Instanciar un objeto con enumerados

Publicado por kingk (108 intervenciones) el 05/07/2018 21:23:54
Hola, el problema es como indica el error el tipo al que tratas de pasar como parametro, debe ser del mismo tipo.
Modificando el codigo que te mostre, podrias hacerlo asi:
Pelicula objPelicula = new Pelicula(tipo.ordinal(),Integer.parseInt(this.txtDuracion.getText()),id,this.txtTitulo.getText(),
mas18,alquilado)

1
2
3
4
5
public Pelicula(int nTipo, int duracion, int identificador, String nombre, boolean mas18, boolean alquilado) {
super(identificador, nombre, mas18, alquilado);
this.tipo = this.tipo.values(nTipo);
this.duracion = duracion;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar