Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: platinumbazz en 16 de Julio 2015, 01:04

Título: Ejemplo Enumerados como clases Enum en Java sin instanciarse CU00682B
Publicado por: platinumbazz en 16 de Julio 2015, 01:04
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
Título: Re:Ejemplo Enumerados como clases Enum en Java Ejercicio resuelto CU00682B
Publicado por: Mario R. Rancel en 16 de Julio 2015, 15:03
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
Título: Re:Ejemplo Enumerados como clases Enum en Java sin instanciarse CU00682B
Publicado por: platinumbazz en 20 de Julio 2015, 15:29
Muchas gracias por la respuesta Mario.

Un saludo