Muy buenas, he realizado el ejercicio propuesto para las variables enumeradas CU00681B del curso básico Aprenda Java como si estuviera en primero, y al realizarlo me ha surgido una duda. He declarado la variable enumerada fuera de la definición de la clase
/**
* This class is to practice the enum types
*
* @author Paula Monasterio-Huelin
* @version 22-06-17
*/
import java.util.*;
[b]enum MarcaDeVehiculo{FORD,TOYOTA,SUZUKI,RENAULT,SEAT};[/b]
public class enumVehiculos
{
// instance variables - replace the example below with your own
private String matricula;
private MarcaDeVehiculo marca;
/**
* Constructor for objects of class enumVehiculos
*/
public enumVehiculos()
{
// initialise instance variables
matricula = "0052VHT";
marca = MarcaDeVehiculo.FORD;
}
/**
* Method setMatricula - set the value for the matricula parameter
*
* @param plateVal the new value of matricula
*/
public void setMatricula(String plateVal)
{
// put your code here
matricula = plateVal;
}
/**
* Method setMarca - set the value for the marca parameter
*
* @param brandVal the new value of marca
*/
public void setMarca(MarcaDeVehiculo brandVal)
{
marca= brandVal;
}
/**
* Method getMarca- obteins the value for the marca parameter
*
* @return the value of marca
*/
public MarcaDeVehiculo getMarca()
{
return marca;
}
/**
* Method getMatricula - obteins the value for the matricula parameter
*
* @return the value of matricula
*/
public String getMatricula()
{
// put your code here
return matricula;
}
}
Y luego en la clase de test puedo instanciarla directamente:
public class TestEnumVehiculos
{
/**
* Main method to test the class enumVehiculos
*/
public static void main(String [] Args)
{
/* Parameters for the test*/
enumVehiculos miCoche = new enumVehiculos();
EntradaDeTeclado miEntrada = new EntradaDeTeclado();
String datosEntrada;
/*group of instructions to execute*/
System.out.println("Introduzca un valor de matricula");
miEntrada.pedirEntrada();
datosEntrada = miEntrada.getEntrada();
miCoche.setMatricula(datosEntrada);
System.out.println("Introduzca un valor de marca entre estos posibles:");
System.out.println("FORD,TOYOTA,SUZUKI,RENAULT,SEAT");
miEntrada.pedirEntrada();
datosEntrada = miEntrada.getEntrada();
if (datosEntrada.equalsIgnoreCase("FORD")){
miCoche.setMarca(MarcaDeVehiculo.FORD);
}else if (datosEntrada.equalsIgnoreCase("TOYOTA") ){
[b] miCoche.setMarca(MarcaDeVehiculo.TOYOTA);[/b]
}else if (datosEntrada.equalsIgnoreCase("SUZUKI") ){
miCoche.setMarca(MarcaDeVehiculo.SUZUKI);
}else if (datosEntrada.equalsIgnoreCase("RENAULT") ){
miCoche.setMarca(MarcaDeVehiculo.RENAULT);
}else if (datosEntrada.equalsIgnoreCase("SEAT") ){
miCoche.setMarca(MarcaDeVehiculo.SEAT);
}
System.out.println("La matrícula del coche es: " + miCoche.getMatricula());
System.out.println("La marca del coche es:" + miCoche.getMarca().toString().toLowerCase());
}
}
Pero he probado a declararla dentro de la definicón de la clase y entonces para instanciarla tengo que llamarla de la siguiente manera:
enumVehiculos.MarcasDeCoche.FORD por ejemplo. Lo que no me queda claro es qué visibilidad o por quien es accesible la variable enumerada si la declaro fuera de la definición de la clase.
Gracias de antemano por vuestra ayuda.