Zastanowienie się, jaką ścieżkę obrać, wymaga odpowiedzi nie tylko na kluczowe pytanie CommonsWare „dlaczego”, ale także na pytanie „do czego?” zdajesz to.
W rzeczywistości jedyną rzeczą, która może przejść przez pakiety, są zwykłe dane - wszystko inne opiera się na interpretacjach tego, co te dane oznaczają lub na co wskazują. Nie możesz dosłownie przekazać obiektu, ale możesz zrobić jedną z trzech rzeczy:
1) Możesz rozbić obiekt na dane składowe, a jeśli to, co znajduje się po drugiej stronie, ma wiedzę o tym samym rodzaju obiektu, może złożyć klon z serializowanych danych. W ten sposób większość typowych typów przechodzi przez pakiety.
2) Możesz przejść przez nieprzezroczysty uchwyt. Jeśli przekazujesz go w tym samym kontekście (choć można by zapytać, po co się przejmować), będzie to uchwyt, który możesz wywołać lub wyłuskać. Ale jeśli przekażesz go przez Binder do innego kontekstu, jego wartość literalna będzie dowolną liczbą (w rzeczywistości te arbitralne liczby liczą się sekwencyjnie od uruchomienia). Nie możesz nic zrobić, ale śledzić to, dopóki nie przekażesz go z powrotem do oryginalnego kontekstu, co spowoduje, że Binder przekształci go z powrotem w oryginalny uchwyt, czyniąc go ponownie użytecznym.
3) Możesz przekazać magiczny uchwyt, taki jak deskryptor pliku lub odniesienie do pewnych obiektów systemu operacyjnego / platformy, a jeśli ustawisz odpowiednie flagi, Binder utworzy klon wskazujący na ten sam zasób dla odbiorcy, który może być faktycznie użyty na Drugi koniec. Ale działa to tylko w przypadku kilku typów obiektów.
Najprawdopodobniej albo przekazujesz swoją klasę tylko po to, aby drugi koniec mógł ją śledzić i zwrócić ci później, albo przekazujesz ją do kontekstu, w którym można utworzyć klon z serializowanych danych składowych ... albo też próbujesz zrobić coś, co po prostu nie zadziała i musisz przemyśleć całe podejście.