Bonsoir à toutes et à tous,

Je me suis trouvé face à deux questions (QCM) en JAVA que j'aimerais bien avoir quelques explications:

1-
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
interface MaClasse { String toString(); }
 
public class TestMaClasse {
 
     public static void main(String[] args){
 
      System.out.println(new MaClasse {
 
        public String toString() { return "Trois jetons"; }
      });
     }
}
Le résultat de l'exécution est "Trois jetons", ce qui est bizarre pour moi ici c'est que: comment on peut faire new pour une interface (MaClasse) ?!!


2-

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
public class MonThread implements Runnable {
 
       public void run(){
          System.out.println("Je suis dans run");
          throw new RuntimeException("Piege");
       }
 
      public static void main(String[] args){
 
      Thread th = new Thread(new MonThread());
      th.start();
      System.out.println("Fin du programme");
      }
}
Comment le compilateur peut atteindre la dernière ligne et afficher "Fin du programme" alors que dans la méthode run(), on a une instructionde throw... ce qui signifie , NORMALEMENT, qu'au niveau de ( th.start() ) on aura une exception et le programme va s'arrêter, nn?


Merci pour vous.