Я использую Gson для обслуживания БД пользователей. Почему мне нужно было использовать переходный процесс для атрибута socketCh, чтобы избежать StackOverflowError?
public class User {
String username;
String password;
ArrayList<String> friends;
transient SocketChannel socketCh = null;
...
}
Когда был выполнен файл fileWriter.write (gson.to Json (usersDB)) ", а socketCh не был временным проблема stackOverflow
static void updateOrCreateDBFile() {
File file = new File(nameJsonDBFile);
Gson gson = new Gson();
try {
if(file.createNewFile()) {
usersDB = new HashMap<String, User>();
System.out.println(name3d + ": Creating the database json file");
}
FileWriter fileWriter = new FileWriter(file);
System.out.println(name3d+": usersDB "+usersDB);
fileWriter.write(gson.toJson(usersDB));
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
}