(ÇÖZÜLDÜ) [JAVA] Serializable kullanımı ?

BadActive

Kızıltaş Madencisi
En iyi cevaplar
0
Öncelikle merhaba, başlıktan da anlaşılabileceği üzere ben bu konuyu tam olarak çözemedim. Bu konuda yardımcı olabilecek düşüncelerinizi(Mantık, işlev vb.) bekliyorum.

Yardımlarınız için şimdiden teşekkür ederim.

@MegaCrafter
@java9
 

MegaCrafter

Obsidyen Madencisi
En iyi cevaplar
0
Serializable benim pek kullandığım bir şey değil. Ama kısaca açıklamak gerekirse sınıfları ObjectOutputStream yoluyla bir yere kaydedip sonra ObjectInputStream ile geri çağırmayı sağlayan bir şey kendisi. Bu tür şeyler dosyalara kaydetmekten daha çok bağlantı yoluyla bilgi göndermek için kullanılıyor. Dediğim gibi pek kullandığım bir şey olmadığından yanlış bir şey söylemiş olabilirim ama temel olarak bu olduğunu söyleyebilirim.
 

java10

kız çava bana kahve yap
En iyi cevaplar
0
etiketlemişsin ama bildirim gelmedi neyseki mega yorum atmış gördüm şimdi,

seria. sıralama anlamına geliyor her class sıralanabilir olmaya bilir(implements Serialzeble) mesela Player, Inventory gibi class lar seria. değil yani bunu sen bir değer olarak atayamazsın peki nasıl yaparsın player için String yaparsın uuid sini alırsın sonra oyunu tarar o uuid ile eşleşen oyuncuyu çekersin getPlayer() methodundan bahsediyorum aynı şekilde inventory yi de ufak bi api ile string e dönüştürebilirsin String bu arada seria. dır yani sıralanabilir genelde string kullanılır seria. class larında sana bir örnek atıyım için açılır;

PHP:
public class Arena
  implements Serializable
{
  private static final long serialVersionUID = 946226928291619094L;
  String name;
  String world;
  LoMLocation LobbyRed;
  LoMLocation LobbyBlue;
  LoMLocation SpawnRed;
  LoMLocation SpawnBlue;
  Boolean active = Boolean.valueOf(false);
  Boolean countdownStarted = Boolean.valueOf(false);
  public ArrayList<String> Players = new ArrayList();
  private ArrayList<String> TeamRed = new ArrayList();
  private ArrayList<String> TeamBlue = new ArrayList();
  HashMap<String, Champion> Champs = new HashMap();
  ArrayList<String> ChampsRed = new ArrayList();
  ArrayList<String> ChampsBlue = new ArrayList();
  int minChamps;
  public int gameCountdownTimer;
 
  public Arena(String name2)
  {
    this.world = name2;
    this.name = name2;
    this.minChamps = 1;
  }
}
gibi üsteki değerler sabit değildir const. a göre yada set get methodları ile değiştirirsin eğer böyle bir classın var ise ArrayList<Aren> arenalar = new ArrayList<>(); arrayi oluşturup oos ois ile save/load yapman gerekiyor onenable a load ondisable a da save methodu kullanman gerek peki oos ois nerde bunlar? ;

Kod:
public static <T> void save(T obj, String path) throws Exception {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));
        oos.writeObject(obj);
        oos.flush();
        oos.close();
    }

    public static <T> T load(String path)throws Exception {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
        T result = (T) ois.readObject();
        ois.close();
        return result;
    }
eee? nasıl kullancam bunu;
onenablea koyman gerekiyor
Kod:
try
    {
      File file = new File(getDataFolder() + "/data/");
      file.mkdirs();
      arenalar = (SL.load(getDataFolder().getPath() + "/data/arenalar.bin"));
    }
    catch (Exception localException) {}

ondisable a koyman gerekiyor;
Kod:
try
    {
      File file = new File(getDataFolder() + "/data/");
      file.mkdirs();
      SL.save(arenalar, getDataFolder().getPath() + "/data/arenalar.bin");
    }
    catch (Exception localException) {}

bu şekilde kullanılıyor anlamadığın yeri sor
 

BadActive

Kızıltaş Madencisi
En iyi cevaplar
0
etiketlemişsin ama bildirim gelmedi neyseki mega yorum atmış gördüm şimdi,

seria. sıralama anlamına geliyor her class sıralanabilir olmaya bilir(implements Serialzeble) mesela Player, Inventory gibi class lar seria. değil yani bunu sen bir değer olarak atayamazsın peki nasıl yaparsın player için String yaparsın uuid sini alırsın sonra oyunu tarar o uuid ile eşleşen oyuncuyu çekersin getPlayer() methodundan bahsediyorum aynı şekilde inventory yi de ufak bi api ile string e dönüştürebilirsin String bu arada seria. dır yani sıralanabilir genelde string kullanılır seria. class larında sana bir örnek atıyım için açılır;

PHP:
public class Arena
  implements Serializable
{
  private static final long serialVersionUID = 946226928291619094L;
  String name;
  String world;
  LoMLocation LobbyRed;
  LoMLocation LobbyBlue;
  LoMLocation SpawnRed;
  LoMLocation SpawnBlue;
  Boolean active = Boolean.valueOf(false);
  Boolean countdownStarted = Boolean.valueOf(false);
  public ArrayList<String> Players = new ArrayList();
  private ArrayList<String> TeamRed = new ArrayList();
  private ArrayList<String> TeamBlue = new ArrayList();
  HashMap<String, Champion> Champs = new HashMap();
  ArrayList<String> ChampsRed = new ArrayList();
  ArrayList<String> ChampsBlue = new ArrayList();
  int minChamps;
  public int gameCountdownTimer;
 
  public Arena(String name2)
  {
    this.world = name2;
    this.name = name2;
    this.minChamps = 1;
  }
}
gibi üsteki değerler sabit değildir const. a göre yada set get methodları ile değiştirirsin eğer böyle bir classın var ise ArrayList<Aren> arenalar = new ArrayList<>(); arrayi oluşturup oos ois ile save/load yapman gerekiyor onenable a load ondisable a da save methodu kullanman gerek peki oos ois nerde bunlar? ;

Kod:
public static <T> void save(T obj, String path) throws Exception {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));
        oos.writeObject(obj);
        oos.flush();
        oos.close();
    }

    public static <T> T load(String path)throws Exception {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
        T result = (T) ois.readObject();
        ois.close();
        return result;
    }
eee? nasıl kullancam bunu;
onenablea koyman gerekiyor
Kod:
try
    {
      File file = new File(getDataFolder() + "/data/");
      file.mkdirs();
      arenalar = (SL.load(getDataFolder().getPath() + "/data/arenalar.bin"));
    }
    catch (Exception localException) {}

ondisable a koyman gerekiyor;
Kod:
try
    {
      File file = new File(getDataFolder() + "/data/");
      file.mkdirs();
      SL.save(arenalar, getDataFolder().getPath() + "/data/arenalar.bin");
    }
    catch (Exception localException) {}

bu şekilde kullanılıyor anlamadığın yeri sor
Cevabın için teşekkür ederim baya detaylı yazmışsın. Sandığımdan daha kolaymış ilk baktığımda gözümü az bir şey korkutmuştu.
Kodlar arasında her şey iyi hoş ama 'public static <T> T' içersin de ki 'T' harfleri ne işe yarıyor ? Hiç görmemiştim.

Serializable benim pek kullandığım bir şey değil. Ama kısaca açıklamak gerekirse sınıfları ObjectOutputStream yoluyla bir yere kaydedip sonra ObjectInputStream ile geri çağırmayı sağlayan bir şey kendisi. Bu tür şeyler dosyalara kaydetmekten daha çok bağlantı yoluyla bilgi göndermek için kullanılıyor. Dediğim gibi pek kullandığım bir şey olmadığından yanlış bir şey söylemiş olabilirim ama temel olarak bu olduğunu söyleyebilirim.
Cevabın için sana da teşekkür ederim, kafamda 1 2 soru işareti kalmıştı @java9 kaldırdı yeni soru geldi :D
 

MegaCrafter

Obsidyen Madencisi
En iyi cevaplar
0
Cevabın için teşekkür ederim baya detaylı yazmışsın. Sandığımdan daha kolaymış ilk baktığımda gözümü az bir şey korkutmuştu.
Kodlar arasında her şey iyi hoş ama 'public static <T> T' içersin de ki 'T' harfleri ne işe yarıyor ? Hiç görmemiştim.


Cevabın için sana da teşekkür ederim, kafamda 1 2 soru işareti kalmıştı @java9 kaldırdı yeni soru geldi :D
O T harfleri Generics dediğimiz bir olay. Eğer istersen forumda onu biraz detaylı anlattığım bir konu vardı: https://forum.gamer.com.tr/konu/java-bilgileri-boeluem-7.341506/
 

GodofMilker

Nether Yerlisi
En iyi cevaplar
0
etiketlemişsin ama bildirim gelmedi neyseki mega yorum atmış gördüm şimdi,

seria. sıralama anlamına geliyor her class sıralanabilir olmaya bilir(implements Serialzeble) mesela Player, Inventory gibi class lar seria. değil yani bunu sen bir değer olarak atayamazsın peki nasıl yaparsın player için String yaparsın uuid sini alırsın sonra oyunu tarar o uuid ile eşleşen oyuncuyu çekersin getPlayer() methodundan bahsediyorum aynı şekilde inventory yi de ufak bi api ile string e dönüştürebilirsin String bu arada seria. dır yani sıralanabilir genelde string kullanılır seria. class larında sana bir örnek atıyım için açılır;

PHP:
public class Arena
  implements Serializable
{
  private static final long serialVersionUID = 946226928291619094L;
  String name;
  String world;
  LoMLocation LobbyRed;
  LoMLocation LobbyBlue;
  LoMLocation SpawnRed;
  LoMLocation SpawnBlue;
  Boolean active = Boolean.valueOf(false);
  Boolean countdownStarted = Boolean.valueOf(false);
  public ArrayList<String> Players = new ArrayList();
  private ArrayList<String> TeamRed = new ArrayList();
  private ArrayList<String> TeamBlue = new ArrayList();
  HashMap<String, Champion> Champs = new HashMap();
  ArrayList<String> ChampsRed = new ArrayList();
  ArrayList<String> ChampsBlue = new ArrayList();
  int minChamps;
  public int gameCountdownTimer;
 
  public Arena(String name2)
  {
    this.world = name2;
    this.name = name2;
    this.minChamps = 1;
  }
}
gibi üsteki değerler sabit değildir const. a göre yada set get methodları ile değiştirirsin eğer böyle bir classın var ise ArrayList<Aren> arenalar = new ArrayList<>(); arrayi oluşturup oos ois ile save/load yapman gerekiyor onenable a load ondisable a da save methodu kullanman gerek peki oos ois nerde bunlar? ;

Kod:
public static <T> void save(T obj, String path) throws Exception {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));
        oos.writeObject(obj);
        oos.flush();
        oos.close();
    }

    public static <T> T load(String path)throws Exception {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
        T result = (T) ois.readObject();
        ois.close();
        return result;
    }
eee? nasıl kullancam bunu;
onenablea koyman gerekiyor
Kod:
try
    {
      File file = new File(getDataFolder() + "/data/");
      file.mkdirs();
      arenalar = (SL.load(getDataFolder().getPath() + "/data/arenalar.bin"));
    }
    catch (Exception localException) {}

ondisable a koyman gerekiyor;
Kod:
try
    {
      File file = new File(getDataFolder() + "/data/");
      file.mkdirs();
      SL.save(arenalar, getDataFolder().getPath() + "/data/arenalar.bin");
    }
    catch (Exception localException) {}

bu şekilde kullanılıyor anlamadığın yeri sor
writeObject ve readObject'i de anlatsana gülüm, önemli onlar da
*uğraşmak istemedi*
 
Üst