I am trying to develop a team management software. I have a Team object:
public class Team implements Serializable{
private String name;//
private ArrayList<Player> teamMembers;//
private String sport;//
private ArrayList<Staff> staff;//Non-Player Members such as head coach, assisstant coach, physio, etc.
private Object schedule;
private String teamHometown;
private String teamState;
// Getter and setter methods go here
public Team(String name, String sport, ArrayList<Player> players, ArrayList<Staff> staff){
teamMembers = players;
this.staff = staff;
this.sport =(sport);
this.name = (name);
}
}
The team object contains an ArrayList of Player Objects. In each Player object the player has many attributes such as a name, stats, and a player photo(a Buffered Image):
public class Player implements Serializable{
private BufferedImage playerPhoto;
private String firstName;
private String lastName;
private int jerseyNumber;
private String playerPosition;
private String status;//Is the player Eligible to plays
private int gameAbscenses;
private int goals;
private int appearances;
private int yellowCards;
private int redCards;
private LocalDate birthday;
private boolean starter;
private int shots;
private int shotsOnGoal;
private int assists;
//Getter and Setter Methods go here
public Player(String firstName, String lastName, int jerseyNumber, String playerPosition,BufferedImage playerPhoto) {
this.firstName = (firstName);
this.lastName = (lastName);
this.jerseyNumber = (jerseyNumber);
this.playerPosition = (playerPosition);
this.gameAbscenses = (0);
this.status = ("Healthy");
this.starter = false;
//stats
this.shots = (0);
this.appearances = (0);
this.shotsOnGoal = (0);
this.redCards = (0);
this.yellowCards = (0);
this.assists = (0);
this.goals = (0);
this.birthday = LocalDate.now();
}
My goal is to serialize an arrayList of Team objects however Buffered images aren't serializable and since the Player object contains a buffered image as one of its private instance variables I can't serialize the ArrayList of Team objects.
I originally tried doing this:
ArrayList<Team> finalTeams = new ArrayList<>(SignInController.userTeams);//Converting the user teams Observable list to an Array List
//Saving the user's Teams locally
FileOutputStream fos = new FileOutputStream(SignInController.userfname+"'s Teams/"+SignInController.userfname+"_teams.xtm");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(finalTeams);//serializing the ARRAYlist of teams
oos.close();
fos.close();
However, it didn't work. I also tried looking at other stack overflow questions that related to serializing Buffered Images but nothing was able to help me.
If someone could explain to me what I am doing wrong that would be awesome! Thanks!