• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

Ερώτηση γενική για Java: "Τρωτότητα" των private attributes προσπελάσιμων μέσω getters

Scheduled Pinned Locked Moved Αντικειμενοστρεφής Προγραμματισμός 2
3 Posts 2 Posters 44 Views
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • it2023086I Offline
    it2023086I Offline
    it2023086
    wrote on last edited by it2023086
    #1

    Αν έχουμε ένα private string attribute, ουσιαστικά αυτό δείχνει σε ένα αντικείμενο τύπου string. Σε μία αντίστοιχη getter, επιστρέφεται αναφορά σε αυτό το String, άρα ο καλών αποκτά πρόσβαση στο private attribute? Πως θα μπορούσε να λυθεί αυτό, αν όντως ισχύει (εγώ θα πρότεινα επιστροφή του string (έστω str) με return str+"";)?

    1 Reply Last reply
    0
  • A Offline
    A Offline
    acharal
    wrote on last edited by
    #2

    Ναι επιστρέφει το ίδιο αντικείμενο που είναι private. Τι πρόβλημα σκέφτεσαι ότι έχει αυτό;

    Το πρόβλημα που νομίζω θα υπήρχε είναι αν μπορούσε να το αλλάξουμε και δεν το θέλουμε. Αν δηλαδή το αντικείμενο έχει μεθόδους που μπορούν να το αλλάξουν.

    Αυτό που προτείνεις είναι αρκετά safe αλλά υπάρχει μεγάλο κόστος γιατί κάθε φορά πρέπει να "αντιγράφεις" το αντικείμενο που μπορεί να είναι μεγάλο.

    Το String δεν μπορείς να το αλλάξεις. Αν παρατηρήσεις τις μεθόδους παράγουν καινούργια Strings σε κάθε πράξη και δεν αλλάζουν το υπάρχων.

    Άλλα αντικείμενα που προσφέρουν και αλλαγή, πχ. ArrayList, υπάρχουν άλλες "τεχνικές" για να μην επιτρέψεις τις αλλαγές που δεν αντιγράφουν το αντικείμενο. ΓΙα το συγκεκριμένο παράδειγμα υπάρχει η unmodifiableList. Το όνομα της τεχνικής είναι Decorator ή Wrapper και θα το πούμε σύντομα!

    1 Reply Last reply
    0
  • it2023086I Offline
    it2023086I Offline
    it2023086
    wrote on last edited by
    #3

    Ευχαριστώ

    1 Reply Last reply
    0

  • Login

Powered by NodeBB Contributors
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups