31/05/2010
Questions pièges Java n°4 : réponse
Code :
class Util{
public static boolean Print(String s){
System.out.print(s);
return true;
}
}
class Parent{
static int i = Classe.init ( );
}
class Classe extends Parent {
static int i = 4;
static int init() {
assert Util.Print ( "A" );
return i;
}
}
public class AClass {
public static void main(String[ ] args){
Classe c = new Classe( );
Util.Print ( "" +Parent.i);
}
}
Réponse
Le programme affiche "A0"
Explication
Lorsque les assertions sont désactivées, l'évaluation des expressions passées en parametres des assert n'a pas lieu
Cependant, lorsque l'on accède à un objet avant de l'avoir initialisé, il se comporte comme si les assertions étaient activées.
Ici :
- Classe( ) lançe l'initialisation de Classe.
- l'initialisation de Classe lançe l'initialisation de Parent
- l'initialisation de Parent appelle Classe.init();
- Classe.init(); est exécutée comme si les assertions étaient activées, et renvoie Classe.i;
- l'initialisation de Parent se termine
- l'initialisation de Classe met Classe.i = 4;
Le programme affiche donc toujours A0
Point théorique associé
ici
12:09 | Lien permanent | Commentaires (0) | Tags : java1.5, reponse question piege
Questions pièges Java n°4
Question 4 :
Qu'affiche le code suivant si on l'exécute sans activer les assertions (à supposer que la fonction main soit effectivement exécutée) :
class Util{
public static boolean Print(String s){
System.out.print(s);
return true;
}
}
class Parent{
static int i = Classe.init ( );
}
class Classe extends Parent {
static int i = 4;
static int init() {
assert Util.Print ( "A" );
return i;
}
}
public class AClass {
public static void main(String[ ] args){
Classe c = new Classe( );
Util.Print ( "" +Parent.i);
}
}
11:54 | Lien permanent | Commentaires (0) | Tags : java1.5, question piège
28/05/2010
Tajine (ou Tagine)
En France, nous employons souvent le mot Tajine en lui donnant différentes significations.
D'après ce que j'ai pu comprendre (corrigez-moi si je me trompe), cette confusion vient essentiellement des différents sens que peut prendre le mot Tajine en arabe.
En arabe standard (l'arabe écrit, qui est commun à l'ensemble du monde arabe), un Tajine est un plat en terre cuite tel que celui ci-à droite. Dans ce sens-là, on ne peut pas utiliser l'expression largement répandue "un plat à Tajine".
En marocain (encore que je ne sois pour l'instant jamais allé au Maroc), un Tagine est le contenu du même plat (ci-à gauche), en général une viande mijotée, celles que j'ai gouté faisaient souvent intervenir des sucrés-salés. C'est dans ce sens que nous l'employons le plus souvent en France.
En tunisien, un Tagine est une recette traditionnelle, faite à base d'œuf, de viande (ou pas), de légumes (ou pas) et souvent d'aromates j'ai personnellement un faible pour ceux qui contiennent de la coriandre fraiche. Vous pouvez-en voir un à droite.
A noter donc qu'en Tunisie, on ne sert pas forcément les Tagine dans des Tagines
20:07 | Lien permanent | Commentaires (0) | Tags : tunisie