第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用對象的get方法獲得屬性,修改這個屬性,但沒用set賦值,為什么這個對象里面的屬性會被影響到?

用對象的get方法獲得屬性,修改這個屬性,但沒用set賦值,為什么這個對象里面的屬性會被影響到?

慕粉4241372 2017-05-15 15:57:41
Grade?g?=?new?Grade("二班",?"mysql基礎班"); Session?session?=?HibernateUtil.getSession(); Transaction?transaction?=?session.beginTransaction(); Student?student?=?session.get(Student.class,?1); Set<Student>?students?=?g.getStudents(); students.add(student); System.out.println("長度是:"+g.getStudents().size()); session.save(g); transaction.commit(); HibernateUtil.closeSession(session);這段代碼中,g是新建的對象,它有4個屬性,構造方法賦了兩個值,還有一個set集合的屬性,這個set集合是空的吧,現(xiàn)在用get方法獲得這個集合,并往里面添加一個對象,所以這個集合長度變?yōu)?了。但我并沒有把這個集合set給g對象,所以g對象里面的set集合應該還是空的呀但我再get一次set集合,他的長度卻是1????為什么??
查看完整描述

3 回答

?
botao555

TA貢獻48條經(jīng)驗 獲得超46個贊

你的Grade類的代碼是什么樣的?

或者你在Grade?g?=?new?Grade("二班",?"mysql基礎班"); 這一行下面先打印下

System.out.println("長度是:"+g.getStudents().size()); 確認下是不是Grade類的students是不是空的。

按照上面你給的代碼,Set<Student>?students 這個引用并沒有對Grade的實例g產(chǎn)生影響,理論上g.getStudents的大小不應該變化。

查看完整回答
1 反對 回復 2017-05-15
  • 慕粉4241372
    慕粉4241372
    我這個g對象都是剛new出來的,除了構造函數(shù)里面賦的值,其他的當然是空呀
  • botao555
    botao555
    好吧,是我理解錯了,你的Set<Student> students = g.getStudents(); 拿到的是g的成員變量students的引用,也就是說你每次調用 g.getStudents()拿到的都是同一個Set的實例,所以add之后再調用 g.getStudents()長度自然會變成1了。不信的話,你可以打印一下 System.out.println(students.hashCode()==g.getStudents().hashCode()); 看看兩個對象的hash值是否一樣,一樣就說明是同一個引用。
?
幕附

TA貢獻78條經(jīng)驗 獲得超18個贊


我覺得是get和load的區(qū)別


查看完整回答
反對 回復 2017-05-15
  • 3 回答
  • 0 關注
  • 3263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號