Autor Tema: Ejemplo Enumerados como clases Enum en Java sin instanciarse CU00682B  (Leído 2471 veces)

platinumbazz

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, he creado primero la siguiente clase:


Código: [Seleccionar]
public enum TipoDePiedra {

CALIZA(1200),
MARMOL(1423.55),
PIZARRA(1325),
CUARZITA(1466.22);

private final double pesoEspecifico;

TipoDePiedra(double pesoEspecifico){

this.pesoEspecifico=pesoEspecifico;

}

public double getPesoEspecifico() {
return pesoEspecifico;
}

}


Y despues la he ejecutado para probarla asi:

Código: [Seleccionar]
public class TestClaseEnum {
    public static void main (String[ ] Args) {
   
       System.out.println ("Un palet admite 2.27 m3 de volumen. A continuación el peso de los palets de las distintas piedras:");
       
       
       for(TipoDePiedra tmp: TipoDePiedra.values()){
       System.out.println(tmp.toString()+ " el palet pesa " + (2.27f*(float)tmp.getPesoEspecifico() ) + " kg");
       }
       
       
       
} //Cierre del main
} //Cierre de la clase

Agradecería si alguien pudiera explicarme por qué funciona sin haber declarado ni inicializado el objeto TipoDePiedra como podria ser:

Código: [Seleccionar]
TipoDePiedra mipiedra = TipoDePiedra.MARMOL;
Gracias
« Última modificación: 17 de Julio 2015, 17:02 por Alex Rodríguez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola plantinumbazz

El ejercicio está correcto

En lugar de hacer la conversión a float, si quieres limitar el número de decimales podrías usar un redondeo (ejemplo en www.aprenderaprogramar.com/foros/index.php?topic=991)

Sobre la duda que planteas, creo que se puede responder de la siguiente manera: hay que diferenciar el tipo de dato enumerado TipoDePiedra de una variable cuyo tipo sea el tipo enumerado como podría ser mipiedra.

El tipo enumerado existe desde que lo declaramos, y Java permite recuperar la información relacionada con un tipo enumerado sin necesidad de que exista una instancia de dicho tipo (esto es lo que hacemos en el fragmento

Código: [Seleccionar]
       for(TipoDePiedra tmp: TipoDePiedra.values()){
       System.out.println(tmp.toString()+ " el palet pesa " + (2.27f*(float)tmp.getPesoEspecifico() ) + " kg");
       }

Esto es una particularidad de Java. Podría ocurrir que esto no se permitiera, pero en este lenguaje sí se permite.

Espero haber ayudado a aclarar la duda.

Saludos
« Última modificación: 20 de Julio 2015, 16:02 por Mario R. Rancel »

platinumbazz

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Ejemplo Enumerados como clases Enum en Java sin instanciarse CU00682B
« Respuesta #2 en: 20 de Julio 2015, 15:29 »
Muchas gracias por la respuesta Mario.

Un saludo

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".