5
juillet
2005
Certification Java ?
juillet
2005
Un article de vbrabant
9 Commentaires
Vous aimeriez passer la certification Java SCJP 5.0 ?
Mais l’Anglais est un obstacle pour vous.
Alors lisez attentivement la suite. Cela devrait vous intéresser.
Je vais profiter de ces vacances pour préparer des fiches concernant la certification Java SCJP 5.0.
Si cela vous intéresse, laissez-moi un message ici-même.
Voici déjà une première fiche, pour vous ouvrir l’appétit.
Les énumérations
Imaginer le code suivant:
public enum DoReMi {
DO,
RE,
MI;
}
DO,
RE,
MI;
}
Quel sera le résultat de la compilation et exécution de ce code:
public enum Notes extends DoReMi {
FA,
SOL,
LA,
SI;
public static void main(String[] args) {
Notes maNote = Notes.LA;
System.out.println(maNote);
}
}
FA,
SOL,
LA,
SI;
public static void main(String[] args) {
Notes maNote = Notes.LA;
System.out.println(maNote);
}
}
- La classe va se compiler et s’exécuter comme il faut et afficher
LA
sur la console. - Il va donner une erreur à la compilation.
- Il va donner une erreur a l’exécution.
9 Commentaires + Ajouter un commentaire
Commentaires récents
Archives
- janvier 2012
- novembre 2010
- février 2009
- janvier 2009
- décembre 2008
- septembre 2008
- août 2008
- décembre 2007
- octobre 2007
- septembre 2007
- juillet 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007
- janvier 2007
- décembre 2006
- novembre 2006
- octobre 2006
- septembre 2006
- août 2006
- juillet 2006
- juin 2006
- mai 2006
- avril 2006
- février 2006
- janvier 2006
- décembre 2005
- novembre 2005
- octobre 2005
- septembre 2005
- août 2005
- juillet 2005
- juin 2005
- mai 2005
- avril 2005
Catégories
- Certification
- Défis
- Devoxx
- Devoxx 2008
- Devoxx 2010
- Devoxx France 2012
- Divers
- Événements Java
- Fiches
- Hardware
- In English
- Java
- JavaDay 2006
- JavaFX
- JavaOne 2005
- JavaOne 2006
- JavaOne 2007
- Javapolis 2005
- Javapolis 2006
- Javapolis 2007
- JBoss
- Livres
- Mac
- NetBeans
- OpenJDK
- Pensée
- Performance
- Perles
- Sun Tech Days Paris 2007
- Traduction
La compilation echoue lors de la (pseudo-pre)compilation.
En fait la grammaire d’une enumeration ne reconnait pas
le mot cle extends.
N’ayant rien reconnu il ne peut pas ‘traduire’.
Bonjour,
Oui je serai vivement interessé par ces fiches!
vraiment bien ce blog!!
pour adiGuba:
attention que quelque chose fut mangé dans le post de mon explication.
public enum DoRemi est « traduit » par public class DoReMi extends Enum<DoReMi>
et donc
Enum ne peut accepter que des objets de type DoReMi et non des dérivés.
Est-ce que cela aide un peu plus ?
Je vais retravailler cette ficher pour y inclure ton explication, et le fait que cela utilise les génériques.
vbrabant : je n’avais pas compris ton explication comme cela…
Je pensais que tu disais qu’on ne pouvait pas avoir plus d’un niveau d’héritage… mais bon j’ai peut-être lu un peu trop vite…
»
, le compilateur va essayer de le « traduire » en
. »
>> Je ne pense pas que ce soit le cas, car il y a le même mechanisme pour les classes : elles héritent implicitement de la classe Object, pourtant on ne se retrouve pas avec ce problème…
De plus l’erreur du compilateur est » expected » sur le mot-clef extends.
Et dans les spécifications il est indiqué que les enum sont implicitement en final (sauf cas particulier où les valeurs de l’énumération redéfinnissent des méthodes) :
« An enum type is implicitly final unless it contains at least one enum constant that has a class body. »
Je pense vraiment qu’on ne peut pas hérité d’une enum afin de conserver une certaine cohérence et non pas parce que le compilateur ‘génère’ un extends de deux classes…
a++
Pour grozeille:
Quel genre d’information voudrais-tu sur les certifs Java que ce qui est disponible sur le site de Sun ? http://www.sun.com/training/catalog/courses/CX-310-055.xml
Pour Wavyx:
N’oublie pas de jeter un coup d’oeil sur le tutoriel de Lionel Roux, hébergé sur developpez.com, concernant Java SE 5. Cela t’aidera déjà énormément pour voir les nouveautés au niveau du langage.
Pour adiGuba:
J’ai peut-être pris un raccourcis dans l’explication, mais voici l’explication plus en détails:
est en fait « traduit » par le compilateur comme
Et lorsqu’on écrit
, le compilateur va essayer de le « traduire » en
.
Même si ton explication soit logique du point de vue logique, ce n’est pas ce qui se passe réellement au niveau du compilateur. C’est du moins ce que j’ai compris à la lecture de la JLS (http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9), et du code source de Enum.
P.S. J’aimerais savoir ce qui te faisais penser dans mon explication que je voulais dire que
petit-fils extends fils extends parent n’était pas possible. Pour enlever l’ambiguité.
1. Je trouve l’idée trés sympa
2. Merci adiGuba, il me semblé bien que l’héritage d’une énumération était impossible
3. extends 1. { On pourrais avoir plus d’infos sur les cértif JAVA ? }
Salut,
C’est une très bonne idée…
Malheureusement je ne suis pas d’accord avec ton explication…
Cela provoque bien une erreur à la compilation.
Mais ce n’est pas à cause de l’héritage multiple car l’héritage est indirect.
Par exemple, l’héritage suivant est correct :
} <br />
<br />
public class Fils extends Parent { <br />
} <br />
<br />
public class PetitFils extends Fils { <br />
}
La classe PetitFils hérite bien directement de Fils, mais elle hérite aussi indirectement de Parent…
Seul l’héritage multiple direct est interdit, par exemple :
}
L’erreur de compilation vient du fait qu’on ne peut pas étendre une énumération car c’est contre la logique même d’une énumération.
En effet, une énumération présente un ensemble fini d’élément, et le fait d’étendre une énumération permet des ensembles infinis.
Par exemple, l’énumération DoReMi ci dessus ne peut prendre que les valeurs DO, RE et MI.
Mais si l’énumération Notes pouvait hérité de DoReMi, le code suivant serait authorisé puisque Notes serait une instance de DoReMi :
On se retrouve donc avec une valeur non authorisé pour l’énumération DoReMi…
CQFD ?
a++
PS : vraiment sympa comme idée j’attend les prochains avec impatience
ça m’intéresse même si l’anglais n’est pas un obstacle.
Le seul truc, c’est que pour java 1.4 la documentation et le livre de référence (Sierra & Bates) étaient claires mais pour le java 5.0 je suis un peu perdu (et j’ai pas encore utilisé les nouvelles fonctionnalités).