exo2 & 3: Think object and add exo3 code from A to B.
[Project_POO.git] / exo3 / Main.java
CommitLineData
fe98f4bd
JB
1import java.lang.reflect.Field;
2import java.lang.reflect.Method;
01bad5b3
JB
3import java.lang.reflect.Constructor;
4import java.lang.reflect.InvocationTargetException;
5import java.util.Scanner;
6import java.io.IOException;
e8b96f44
JB
7
8class Main {
9
10 private static void main_orig(String[] args) {
11 Entiers integer = new Entiers(5);
12
13 integer.inserer(1);
14
15 integer.afficher();
16
17 integer.inserer(12);
18
19 integer.afficher();
20
21 integer.inserer(3);
22
23 integer.afficher();
24
25 integer.inserer(0);
26
27 integer.inserer(1);
28
29 integer.afficher();
30
31 integer.supprimer(12);
32
33 integer.afficher();
34 System.out.println("Current size " + integer.getCurrentSize());
35
36 integer.supprimer(1);
37
38 integer.afficher();
39 System.out.println("Current size " + integer.getCurrentSize());
40
41 }
42
01bad5b3 43 private static void main_A(String[] args) {
72fb6b7d 44 if (args.length == 0) {
4845756e 45 System.out.println("Please run with java Main <class name to inspect>");
72fb6b7d
JB
46 System.exit(-1);
47 }
fe98f4bd 48 String className = args[0];
72fb6b7d 49
fe98f4bd
JB
50 Class cl = null;
51 try {
52 cl = Class.forName(className);
53 }
54 catch (ClassNotFoundException e) {
55 System.out.println("Entered class name do not exist.");
56 System.exit(-1);
57 }
58
59 Field[] fields = cl.getFields();
60 Method[] methods = cl.getMethods();
61
62 for (int i = 0; i < fields.length; i++) {
63 System.out.println(fields[i]);
64 }
65
66 for (int i = 0; i < methods.length; i++) {
67 System.out.println(methods[i]);
68 }
01bad5b3
JB
69 }
70
71 /**
72 * The main() function
73 * @param String[] args main() function arguments array
74 */
75 public static void main(String[] args) {
76 String name = Entiers.class.getName();
77 Class cl = null;
78 Object o = null;
79 try {
80 cl = Class.forName(name);
81 Class[] types = new Class[]{Integer.class};
82 Constructor ct = cl.getConstructor(types);
83 o = ct.newInstance(new Integer(100));
84 }
85 catch (ClassNotFoundException e) {
86 System.out.println("Class name do not exist.");
87 System.exit(-1);
88 }
89 catch (NoSuchMethodException e) {
90 e.printStackTrace();
91 }
92 catch (InstantiationException e) {
93 e.printStackTrace();
94 }
95 catch (IllegalAccessException e) {
96 e.printStackTrace();
97 }
98 catch (InvocationTargetException e) {
99 e.printStackTrace();
100 }
fe98f4bd 101
01bad5b3
JB
102 Scanner uInput = null;
103 try {
104 uInput = new Scanner(System.in);
105 System.out.println("Saisir le nom de la methode à invoquer:");
106 String method = uInput.next();
107 //TODO: one can build the input list from the method arguments list and types
108 System.out.println("Saisir l'argument entier paramètre de la méthode:");
109 int integer = uInput.nextInt();
110 Method m = cl.getMethod(method, new Class[]{Integer.class});
111 m.invoke(o, integer);
112 }
113 catch (Exception e) {
114 System.out.println("Erreur:");
115 e.printStackTrace();
116 }
117 finally {
118 try {
119 Method mDisplay = cl.getMethod("afficher");
120 mDisplay.invoke(o);
121 }
122 catch (NoSuchMethodException e) {
123 e.printStackTrace();
124 }
125 catch (IllegalAccessException e) {
126 e.printStackTrace();
127 }
128 catch (InvocationTargetException e) {
129 e.printStackTrace();
130 }
131 uInput.close();
132 }
e8b96f44
JB
133 }
134}