猿问

用对象的get方法获得属性,修改这个属性,但没用set赋值,为什么这个对象里面的属性会被影响到?

		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集合是空的吧,现在用get方法获得这个集合,并往里面添加一个对象,所以这个集合长度变为1了。

但我并没有把这个集合set给g对象,所以g对象里面的set集合应该还是空的呀

但我再get一次set集合,他的长度却是1????为什么??

慕粉4241372
浏览 3216回答 3
3回答

botao555

你的Grade类的代码是什么样的?或者你在Grade g = new Grade("二班", "mysql基础班"); 这一行下面先打印下System.out.println("长度是:"+g.getStudents().size()); 确认下是不是Grade类的students是不是空的。按照上面你给的代码,Set<Student> students 这个引用并没有对Grade的实例g产生影响,理论上g.getStudents的大小不应该变化。

幕附

我觉得是get和load的区别
随时随地看视频慕课网APP

相关分类

Java
我要回答