Android Bundle’dan Serileştirilebilir Sınıfları Alma
Android’de, verileri bir aktivite veya fragment arasında aktarmak için Bundle nesneleri kullanılır. Bundle’lar, temel veri türlerinin yanı sıra serileştirilebilir nesneleri de depolayabilir. Serileştirilebilir nesneler, durumlarını kalıcı bir depolama ortamına yazabilen ve daha sonra bu durumdan yeniden oluşturulabilen nesnelerdir.
Bu makale, Android Bundle’dan serileştirilebilir sınıfları nasıl alacağınızı adım adım açıklayacaktır.
Serileştirilebilir Sınıflar Oluşturma
Serileştirilebilir bir sınıf oluşturmak için Serializable
arayüzünü uygulamanız gerekir. Bu arayüz, writeObject
ve readObject
adlı iki yöntemi tanımlar. writeObject
yöntemi, nesnenin durumunu bir ObjectOutputStream
nesnesine yazar ve readObject
yöntemi, nesnenin durumunu bir ObjectInputStream
nesnesinden okur.
Örneğin, aşağıdaki sınıf bir Person
nesnesini serileştirir:
“`java
public class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public void writeObject(ObjectOutputStream out) throws IOException {
out.writeObject(name);
out.writeInt(age);
}
@Override
public void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
name = (String) in.readObject();
age = in.readInt();
}
}
“`
Serileştirilebilir Nesneleri Bundle’a Ekleme
Serileştirilebilir bir nesneyi Bundle’a eklemek için putSerializable
yöntemini kullanabilirsiniz. Bu yöntem, nesnenin sınıf adını anahtar olarak ve nesnenin kendisini değer olarak alır.
Örneğin, aşağıdaki kod bir Person
nesnesini bir Bundle’a ekler:
java
Bundle bundle = new Bundle();
bundle.putSerializable("person", new Person("John Doe", 30));
Serileştirilebilir Nesneleri Bundle’dan Alma
Serileştirilebilir bir nesneyi Bundle’dan almak için getSerializable
yöntemini kullanabilirsiniz. Bu yöntem, nesnenin sınıf adını anahtar olarak alır ve nesnenin kendisini değer olarak döndürür.
Örneğin, aşağıdaki kod bir Bundle’dan bir Person
nesnesi alır:
java
Bundle bundle = new Bundle();
Person person = (Person) bundle.getSerializable("person");
Önemli Hususlar
- Serileştirilebilir sınıflar, geçici durumlarını kalıcı bir depolama ortamına yazabilmelidir.
- Serileştirilebilir sınıflar, durumlarını daha sonra yeniden oluşturabilmelidir.
- Serileştirilebilir sınıflar, farklı JVM’lerde serileştirilebilir ve yeniden oluşturulabilir olmalıdır.
Faydalı Kaynaklar
- Android Geliştiriciler: Serileştirme ve Parselleme
- Java Öğreticileri: Serileştirme
- Serileştirilebilir Sınıflar