Comment s'étend Enum en Java?
J'ai une classe à partir de l'exemple de projet.Mais quand je suis à l'aide de cette classe, il montre des erreurs.La classe est donnée ci-dessous.
public class q extends Enum
{
private int i = -1;
private String s = null;
private q(String s, int i)
{
//super(s, i);
this.s = s;
this.i = i;
}
public static q valueOf(String s)
{
return (q)Enum.valueOf(q.class, s);
}
public static q[] values()
{
return (q[])a.clone();
}
public static final q ANDROID_VERSION;
public static final q APP_VERSION_CODE;
public static final q APP_VERSION_NAME;
public static final q AVAILABLE_MEM_SIZE;
private static final q a[];
static
{
APP_VERSION_CODE = new q("APP_VERSION_CODE", 1);
APP_VERSION_NAME = new q("APP_VERSION_NAME", 2);
ANDROID_VERSION = new q("ANDROID_VERSION", 6);
AVAILABLE_MEM_SIZE = new q("AVAILABLE_MEM_SIZE", 11);
q aq[] = new q[34];
aq[0] = APP_VERSION_CODE;
aq[1] = ANDROID_VERSION;
aq[2] = APP_VERSION_NAME;
aq[3] = AVAILABLE_MEM_SIZE;
a = aq;
}
}
Lors de l'extension Enum il montre "Le type q peut ne pas sous-classe Enum explicitement d'erreur".Comment puis-je créer un enum à l'aide de ces champs?
Comment puis-je modifier cette classe à utiliser comme enum(c'est à dire,je veux utiliser la valeur par défaut enum méthodes comme ordinal(),valueOf (...), etc...)?
OriginalL'auteur Devu Soman | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas étendre de
Enum
. Vous devez déclarer unEnum
classe comme:Et vous aussi ne peut pas instancier une classe enum directement. Chaque type de votre enum classe est instanciée qu'une seule fois par la machine virtuelle.
Que voulez-vous faire?
Pourriez-vous me montrer un exemple de code ci-dessus?
C'est parce que vous ne pouvez pas faire
new Q();
. Il y a exactement 3 différents Qs autour de laquelle sont accessibles à Q. TYPE1, Q. TYPE2 et Q. TYPE3. Qs constructeur doit être privé.OriginalL'auteur thaussma
Enums fondamentalement bouillir jusqu'à quelque chose comme ceci:
Il n'y a plus que vous pouvez faire, mais cela doit expliquer pourquoi vous ne pouvez pas instancier
Q
.OriginalL'auteur atamanroman
- Pense de la
enum
mot-clé syntatic sucre. Il ensembles de classes héritage normal arbres pour vous, mais ne vous permettra pas d'étendrejava.lang.Enum
.Par exemple:
OriginalL'auteur Kumar Vivek Mitra