1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| public class Param_inst {
// tableau de string me précisant l'ordre des attribut de la classe
public static final String[] tab_nomVariable = {"nbr_utilisateur1", "nbr_utilisateur2", "nbr_utilisateur3", "nbr_utilisateur4", "nbr_utilisateur5",
"nbr_utilisateur6", "nbr_utilisateur7", "nbr_utilisateur8", "nbr_utilisateur9"};
// Attribut de la classe
public static int nbr_utilisateur1;
public static byte nbr_utilisateur2;
public static short nbr_utilisateur3;
public static byte nbr_utilisateur4;
public static byte nbr_utilisateur5;
public static short nbr_utilisateur6;
public static byte nbr_utilisateur7;
public static byte nbr_utilisateur8;
public static byte nbr_utilisateur9;
//constructeur
public Param_inst() {
}
// initialise chaque attribut de ma classe avec le tableau d'octet tab_octet
public static void initialisation(byte[] tab_octet, Param_inst o) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException, IOException {
// Initialisation de mon flux de lecture
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(tab_octet));
//Lecture de mon tableau de String
for (int i = 0; i < tab_nomVariable.length; i++) {
//je recupere l'attribut
Field field = o.getClass().getDeclaredField(tab_nomVariable[i]);
// Variable tampon pour le type de mon attribut
Class<?> tmp;
tmp = field.getType();
//test du type de mon attribut
if (tmp == byte.class) {
//set mon attribut
field.setByte(o, dis.readByte());
}
if (tmp == short.class) {
//set mon attribut (reverseByte me permet de récuperer la bonne valeur car mon tableau d'octet et en litle endian
field.setShort(o, Short.reverseBytes(dis.readShort()));
}
if (tmp == int.class) {
field.setInt(o, Integer.reverseBytes(dis.readInt()));
}
}
}
} |
Partager