Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Instanciar un objeto de una clase con enumerados

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.

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);
}

julio 3, 2018 | Unregistered CommenterJuan

Lo mas facíl que puedes hacer es borrar el enumerado de tu clase Pelicula y
AltaPelicula, luego creas en un archivo aparte el enumerado, tal cual lo definiste anteriormente

public enum TipoPelicula{
DVD, BluRay
}

creas una variable de este tipo en la clase Pelicula y en AltaPelicula si los necesitas.
Y para usar un valor de ellos, sólo tendrías que hacer algo como:

TipoPelicula.DVD

dado que tienes los mismos valores en "Tipo" y "TipoPelicula", creo que es tu mejor opción, además aunque tengan las mismas constantes "Tipo" y "TipoPelicula" son enumerados diferentes de ahí el error que te muestra.

julio 16, 2018 | Unregistered CommenterJose Alberto