Estoy aprendiendo Enums en java Me gusta saber cuáles son las principales diferencias de Enum en Java y C++. GraciasDiferencia de Enum entre Java y C++?
Respuesta
En C++, una enumeración es solo un conjunto de constantes integrales con nombre. En Java, una enumeración es más como una instancia nombrada de una clase. Usted tiene la capacidad de personalizar los miembros disponibles en la enumeración.
Además, C++ convertirá implícitamente los valores enum a su equivalente integral, mientras que la conversión debe ser explícita en Java.
Más información disponible en Wikipedia.
Las enumeraciones en C/C++ son enteros simples.
Las enumeraciones en Java son objetos, pueden tener métodos (con un comportamiento diferente de una instancia enum a otra). Además, la clase enum proporciona métodos que permiten la iteración sobre todas las instancias enum y la búsqueda de una instancia enum.
C++:
typedef enum { Red, Yellow, Green } Colors;
void canCrossIntersection(Colors c) {
return c == Green;
}
Java:
public enum Colors {
RED(false),
Yellow(false),
Green(true)
;
Color(boolean b) { this.b = b; }
private boolean b;
public boolean canCrossIntersection() { return b; }
}
Un efecto importante de las enumeraciones en objetos Java es que son verdaderamente seguras para tipos: solo puede pasar valores válidos a métodos que esperan un valor enum.En C, puede pasar fácilmente '253', que puede o no asignarse a un valor enum válido. –
Joachim Sauer, su punto es correcto pero irrelevante, la pregunta es acerca de C++ donde las enumeraciones * son * tipo-seguras. – avakar
Una gran característica de Java Enums que le falta en C++ es el nombre ( método). De esta forma, puede obtener el nombre de valor de Enum (como está escrito en la definición enum) sin ninguna línea adicional de código en la definición. Por ejemplo:
enum Type {T1, T2, T3}
Type t = Type.T1;
System.out.println(t.name()); // prints T1
En C++ una enumeración es solo una lista de valores enteros. En una enumeración de Java es una clase de enumeración que se extiende y es más una buena manera de escribir:
class MyEnum extends Enum<MyEnum>
{
public final static MyEnum VE01 = new MyEnum();
public final static MyEnum VE02 = new MyEnum();
}
como enumeración:
enum MyEnum
{
VE01,VE02;
}
para los métodos de enumeración ver this. Dado que un enum de Java es un objeto, admite todo lo que hace un objeto Java normal. como darles valores o funciones:
enum Binary{
ZERO(0),ONE(1);
Binary(int i)
{
value = i;
}
public final int value;
}
una agradable es clases anónimas:
enum State{
StateA{
public State doSomething()
{
//state code here
return StateB;
}
},
StateB{
public State doSomething()
{
return StateA;
}
};
public abstract State doSomething();
}
@ buena publicación. gracias – q0987
En Java se puede incluso emulado enumeraciones extensibles dejando a implementar la misma interfaz y luego añadir la totalidad de su valores a algún tipo de colección llamando a su método de valores().
Para una respuesta semielaborada ... C++ 0x Los enunciados fuertemente tipados traen muchos de los beneficios de Java Enums a C++: mecanografía fuerte, alcance, etc. Si su compilador es compatible con C++ 0x Enumeraciones muy tipadas, debería considerar usarlas.
Referencia: http://www2.research.att.com/~bs/C++0xFAQ.html#enum
- 1. Diferencia entre Enum y Definir declaraciones
- 2. Diferencia entre Object-C y Java
- 3. Diferencia entre C: y C:/
- 4. C++ typedef enum y justo ENUM
- 5. Diferencia entre java y javaw
- 6. Diferencia entre '.' y "." en java
- 7. Diferencia entre C++ y proceso de compilación de Java
- 8. diferencia entre java bean y java class?
- 9. Diferencia entre Java SE y Java EE
- 10. C# diferencia entre == y equals()
- 11. diferencia entre el iPhone AES (Objetivo-c) y Java
- 12. ¿Diferencia entre Groovy def y Java Object?
- 13. diferencia entre el entero atómico Java y C# Interlocked.Increment method
- 14. Diferencia de Java entre FileWriter y BufferedWriter
- 15. Diferencia entre read() y fgets() en C
- 16. punteros void: diferencia entre C y C++
- 17. Diferencia entre C++ administrado y C++
- 18. Diferencia entre Enum.GetValues y Enum.GetNames
- 19. Java - Diferencia entre SwingWorker y SwingUtilities.invokeLater()
- 20. Diferencia entre Java DateUtils.ceiling y DateUtils.truncate
- 21. Diferencia entre Authenticode, SPC y Java CodeSign?
- 22. Diferencia entre Java Enumeration y Iterator
- 23. Diferencia entre System.load() y System.loadLibrary en Java
- 24. Diferencia entre parseInt y valueOf en java?
- 25. Diferencia entre clase Java y jar
- 26. cifrado RSA: Diferencia entre Java y Android
- 27. Diferencia entre Executor y ExecutorCompletionservice en java
- 28. Java: diferencia entre PrintStream y PrintWriter
- 29. Java: Diferencia entre Class.forName y ClassLoader.loadClass
- 30. Diferencia entre HashMap y Map en Java ...?
Nota: C++ va a convertir de manera implícita los valores de enumeración a su equivalente integral cuando no hay declaración de la clase que le precede. –