Возможно ли в CodenameOne сохранять многомерные массивы? - PullRequest
0 голосов
/ 12 января 2019

Я знаю, что могу сохранить только небольшое количество классов, используя Storage в CodenameOne, но мне интересно, возможно ли сохранить многомерные массивы.

1 Ответ

0 голосов
/ 13 января 2019

Не обнаружено многомерных массивов, но вы можете сохранить их, используя ручной код, например, в вашем Externalizable интерфейсе вы можете использовать что-то вроде этого для записи:

 if(myMultiArr == null) {
     out.writeInt(0);
 } else {
     out.writeInt(myMultiArr.length);
     for(int iter = 0 ; iter < myMultiArr.length ; iter++) {
         if(myMultiArr[iter] == null) {
             out.writeInt(0);
         } else {
             out.writeInt(myMultiArr[iter].length);
             for(int i = 0 ; i < myMultiArr[iter].length ; i++) {
                 out.writeInt(myMultiArr[iter][i]);
             }
         }
     }
 }

Тогда вы можете прочитать это с помощью:

 myMultiArr = new int[in.readInt()][];
 for(int iter = 0 ; iter < myMultiArr.length ; iter++) {
      myMultiArr[iter] = new int[in.readInt()];
      for(int i = 0 ; i < myMultiArr[iter].length ; i++) {
          myMultiArr[iter][i] = in.readInt();
      }
 }

Обратите внимание, что этот код преобразует нулевые значения в массивы 0 длины и предполагает многомерный массив целых чисел. Хотя его довольно легко адаптировать к чему-либо.

...