/ / Wykonywanie atrybutu obiektu Java dostępnego tylko dla tego obiektu - java, członkowie prywatni

Wykonywanie atrybutu obiektu Java dostępnego tylko dla tego obiektu - java, członkowie prywatni

Czy istnieje sposób w języku Java, aby wyrazić, żeatrybut x obiektu o można uzyskać (mam na myśli kropkowo notację o.x) tylko przez samo o? Aby było jasne: mówię o dostępie na poziomie obiektu, jak w Smalltalk, a nie na poziomie klasy (tak prywatny nie jest wystarczająco prywatny)?

Przykro mi - jestem pewien, że było to zadawane wiele razy wcześniej, ale wydaje mi się, że wybrałem złe słowa kluczowe podczas wyszukiwania.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie jest to możliwe w Javie (nic nie znaczy więcejprywatne niż pola oznaczone jako "prywatne"), ale jeśli się nad tym zastanowisz, jest to również logiczne: możesz modyfikować prywatne pola innych obiektów tylko wspólnym kodem źródłowym, a jeśli kontrolujesz kod źródłowy klasy, możesz rób tak złe i dobre rzeczy.

Przy okazji, możesz uzyskać dostęp nawet do prywatnych zmiennych innych klas poprzez odbicie, jeśli nie ma zainstalowanego menedżera zabezpieczeń lub polityka menedżera bezpieczeństwa na to pozwala, zobacz: Dlaczego można uzyskać dostęp do prywatnych pól Java za pomocą refleksji?


0 dla odpowiedzi nr 2

To, co chcesz zrobić, nie jest możliwe. Każdy obiekt ma swój własny zestaw zmiennych instancyjnych i można uzyskać do niego dostęp przez ten obiekt, o ile nie są one statyczne. Krótko mówiąc, jeśli chcesz uzyskać atrybut obiektu Java dostępnego tylko dla tego obiektu, utrzymaj ten obiekt przy życiu. .