1、一个长期不接触java容易搞错的问题:
package mockitodemo;
public class testClass {
Person a;
public Person setA(Integer personID, String personName) {
this.a= new Person(personID, personName);
return a;
}
public Person getA(){
return this.a;
}
public static void main(String args[]) {
testClass tc1 = new testClass(); //实例化了一个testClass对象,但是类内部a只是做了声明,未进行指向
Person person1 = tc1.setA(123, "curry");//tc1对象内部运行了set方法,生成了一个person实例,a指向该实例,又把a的指向给person1,导致person
//也指向此时生成的person实例
Person person2 = tc1.setA(234, "figo");//tc1对象内部再次运行了set方法,又生成了一个person实例,导致a变量指向新的实例,person2也指向该实例。
System.out.println(tc1.getA());
System.out.println(person1);
System.out.println(person2);
}
}
输出:
mockitodemo.Person@7852e922
mockitodemo.Person@4e25154f
mockitodemo.Person@7852e922



