טוב, נראה ש-++C שלי יותר חלודה מ-C, כי שכחתי
ש-const מפריע גם להפעלת מתודות על אובייקט שאינן const בעצמן.
 
עבור אוספים ספציפית, ל-Java יש פתרון מוכן משלו, כל אוסף מגיע גם בגרסה Unmodifiable:
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#unmodifiableList(java.util.List)
 
האם הפתרון הזה אלגנטי כמו const או לא אפשר להתווכח, ואני מניח שזה תלוי לחלוטין בשימוש.
כרגע, השימוש היחיד שעולה לי לאוסף שהוא const זה בהכרזת פרמטר לפונקציה, כמאין "הבטחה" - תיעוד בתוך הקוד שמראה שהפונקציה לא תשנה את האוסף.
 
Javadoc נורמלי עבור API אמור למנוע את הצורך הזה.
 
אם אתה כותב מחלקת אוסף משלך, אני מניח שתצטרך לעבוד קצת כדי ליצור אפשרות לגרסה שתואמת const.
מצד שני, עבור מי שמשתמש במחלקה זה כנראה לא ישנה, והמשתמש הוא ששם בד"כ const על משהו.
 
לי אישית מפריע הרבה יותר שב-Java אין טיפוסים unsigned, מה שיוצר בעיות לא קטנות כשצריך לעבוד עם קבצים בינאריים או מקור מידע בינארי אחר (למשל ערוץ BT).
בכלל, עבודה ברמה של bytes ועבודה עם קבצים די מסורבלת ומתפזרת על פני יותר מידי מחלקות לטעמי.
 
מנגד, היכולת של ++C לדרוס כמעת את כל האופרטורים, בעוד שנותנת לשפה כוח רב, גם יכולה בקלות להכניס מתכנת לסיוט בלתי נגמר של קוד לא קריא בעליל והתנהגות לא צפויה.
לפעמים פחות זה יותר