最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

慕粉4241372 2017-05-15 15:57:41
Grade?g?=?new?Grade("二班",?"mysql基礎(chǔ)班"); 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是新建的對(duì)象,它有4個(gè)屬性,構(gòu)造方法賦了兩個(gè)值,還有一個(gè)set集合的屬性,這個(gè)set集合是空的吧,現(xiàn)在用get方法獲得這個(gè)集合,并往里面添加一個(gè)對(duì)象,所以這個(gè)集合長度變?yōu)?了。但我并沒有把這個(gè)集合set給g對(duì)象,所以g對(duì)象里面的set集合應(yīng)該還是空的呀但我再get一次set集合,他的長度卻是1????為什么??
查看完整描述

3 回答

?
botao555

TA貢獻(xiàn)48條經(jīng)驗(yàn) 獲得超46個(gè)贊

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

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

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

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

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

TA貢獻(xiàn)78條經(jīng)驗(yàn) 獲得超18個(gè)贊


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


查看完整回答
反對(duì) 回復(fù) 2017-05-15
  • 3 回答
  • 0 關(guān)注
  • 3288 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)