Sérialiser une ArrayList d'objet

Booskap

Aventurier
7 Novembre 2019
10
3
3
25
Bonjour,

J'ai enfin trouvé la technique pour enregistrer dans un fichier une collection d'objet:bave:, et je commence a voir flou, c'est pourquoi je reviens une fois de plus pour demandé l'avis, idée ou la solution de personne étant plus expérimenter que moi ou qui sont déjà passer par la..L'erreur paraît simple il me renvoi :
java.io.NotSerializableException: org.bukkit.Location pourtant je ne trouve pas la solution pour rendre l'objet Location serialisable j'ai essayé d'utilisé le mot clé transient.

Peut être que le code que j'ai écris ne correspond pas a ce que je veux réellement faire .. Je vous présentes les 4 classes que j'utilise pour mes tests ..:
Java:
package eu.booskap.locationtest;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import org.bukkit.plugin.java.JavaPlugin;

import eu.booskap.locations.LocationContents;
import eu.booskap.locationtest.commands.CommandTest;

public class Main extends JavaPlugin{
  
    private static Main instance;

  
    @Override
    public void onEnable() {
      
        instance = this;
        new LocationContents(LocationContents.getGameLoc());     
      
        getLogger().info("Enable");
        getCommand("randomtp").setExecutor(new CommandTest());
        getCommand("addpos").setExecutor(new CommandTest());
        if(!getDataFolder().exists()) {
            getDataFolder().mkdir();
        }
        super.onEnable();
    }
  
    @Override
    public void onDisable() {
        System.out.println("Serialisation des pos en cours...");
        try {
            FileOutputStream fos = new FileOutputStream("datapos");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(LocationContents.getGameLoc());
            oos.close();
            fos.close();
          
            System.out.println("Serialisation des pos terminé!");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        super.onDisable();
    }
  
    public static Main getInstance() {
        return instance;
    }
  
}
Java:
package eu.booskap.locations;

import java.io.Serializable;

import org.bukkit.Location;
import org.bukkit.World;

public class Locations extends Location implements Serializable {

    public Locations(World world, double x, double y, double z) {
        super(world, x, y, z);
        // TODO Auto-generated constructor stub
    }

    public Locations(World world, double x, double y, double z, float yaw, float pitch) {
        super(world, x, y, z, yaw, pitch);
        // TODO Auto-generated constructor stub
    }

}
Inutile, vue que au final il me demande un cast :
Java:
package eu.booskap.locations;

import java.io.Serializable;

import org.bukkit.Location;
import org.bukkit.World;

public class Locations extends Location implements Serializable {

    public Locations(World world, double x, double y, double z) {
        super(world, x, y, z);
        // TODO Auto-generated constructor stub
    }

    public Locations(World world, double x, double y, double z, float yaw, float pitch) {
        super(world, x, y, z, yaw, pitch);
        // TODO Auto-generated constructor stub
    }

}
Java:
package eu.booskap.locationtest.commands;

import java.util.Random;

import eu.booskap.locations.LocationContents;
import eu.booskap.locations.Locations;

public class CommandTestimplements CommandExecutor {

    private static final Random random = new Random();
  
    private transient Locations newLoc;
  
    @Override
    public boolean onComtest(CommandSender sender, Command cmd, String msg, String[] arg2) {
      
        if(cmd.getName().equalsIgnoreCase("addpos")) {
          
            if(sender instanceof Player) {
                final Player p = (Player) sender;
              
                newLoc = (Locations) p.getLocation();
                LocationContents.getGameLoc().add(newLoc);
                p.sendMessage("Tp reussis");
            }
            else {
                sender.sendMessage("Erreur: commandes non executable depuis la console.");
            }
            return true;
        }
      
        return false;
    }

}

Voilà , Alors je pense que ma question serait plutôt comment rendre serialisable un objet de Bukkit ? Merci a vous pour la lecture ! :merci
 

Booskap

Aventurier
7 Novembre 2019
10
3
3
25
@ShE3py Merci , je pense que cette documentation va m'être utile ! j'essaye cette solution et je reviens edit tout ça avec la solution ou un nouveau problème :D
encore merci :merci