Hangi yolu seçeceğinizi bulmak, yalnızca CommonsWare'in "neden" temel sorusunu değil, aynı zamanda "neye?" Sorusunu da yanıtlamayı gerektirir. geçiyor musun
Gerçek şu ki, paketlerden geçebilecek tek şey düz verilerdir - geri kalan her şey, bu verilerin ne anlama geldiğinin veya ne anlama geldiğinin yorumlanmasına dayanır. Kelimenin tam anlamıyla bir nesneyi geçemezsiniz, ancak yapabileceğiniz şu üç şeyden biridir:
1) Nesneyi temel verisine ayırabilirsiniz ve diğer uçta aynı türden bir nesne hakkında bilgi varsa, serileştirilmiş verilerden bir klon oluşturabilir. Yaygın türlerin çoğu bu şekilde paketlerden geçer.
2) Opak bir tutacağı geçirebilirsiniz. Eğer onu aynı bağlamda geçiriyorsanız (yine de biri neden uğraştığınız sorulabilir), bu, başvurabileceğiniz veya başvurmayı kaldırabileceğiniz bir tutamaç olacaktır. Ancak bunu Binder'den farklı bir bağlama geçirirseniz, gerçek değeri rastgele bir sayı olacaktır (aslında, bu rastgele sayılar başlangıçtan itibaren sırayla sayılır). Hiçbir şey yapamazsınız, ancak orijinal bağlama geri dönene kadar takip edin, bu da Binder'ın onu orijinal tutamaca geri dönüştürmesine ve yeniden kullanışlı hale getirmesine neden olur.
3) Dosya tanımlayıcı veya belirli işletim sistemi / platform nesnelerine referans gibi sihirli bir tutamaç geçirebilirsiniz ve doğru bayrakları ayarlarsanız Binder, alıcı için aynı kaynağa işaret eden bir klon oluşturacaktır, bu da aslında diğer Son. Ancak bu yalnızca birkaç tür nesne için işe yarar.
Büyük olasılıkla, ya sınıfınızı sırf diğer ucun onu takip edebilmesi ve daha sonra size geri verebilmesi için geçiriyorsunuz ya da serileştirilmiş kurucu verilerden bir klonun oluşturulabileceği bir bağlama aktarıyorsunuz ... ya da başka işe yaramayacak bir şey yapmaya çalışıyorsunuz ve tüm yaklaşımı yeniden düşünmeniz gerekiyor.