首页 > 代码库 > 注意java的对象引用

注意java的对象引用

要注意,当前拿到的“对象引用”, 是不是 指向 最新的实例, 没有的话, 要重新 生成实例去指向。

代码例子:

  

AnsweringRuleInfo bhRule = accountGenerator.getAnswerRule(mailboxId, false, AnsweringRuleType.BusinessHours);
            for(int j=0; j<bhRule.getPhones().size();j++){
                bhRule.getPhones().get(j).setEnabled(false);
                bhRule.setPhones(Arrays.asList(bhRule.getPhones().get(j)));
            }
            accountGenerator.setAnswerRule(mailboxId, bhRule);

解析:

 

bhRule.getPhones().get(j).setEnabled(false); 操作后, 若不对bRule重新设置 :bhRule.setPhones(Arrays.asList(bhRule.getPhones().get(j)));    (bhRule.getPhones(). 返回List<ForwardPhoneInfo>)

accountGenerator.setAnswerRule(mailboxId, bhRule) 后, 该account 下ForwardPhoneInfos  各个ForwardPhoneInfo 保持原来的status,映射不到。

 

        RingGroup ringGroup4;
        ss.getUserCallHandlingComponent().save();
        openCallForwarding(hours);
        ringGroup4 = ss.getUserCallHandlingComponent().getRingGroupByLabel(hours, firstDeskPhoneLabel);
        ArrayList<String> phoneLabels = ringGroup4.getPhoneLabelsInGroup();
        assertEquals(phoneLabels.get(0), firstDeskPhoneLabel, "The ring group include " + firstDeskPhoneLabel);
        assertEquals(phoneLabels.get(1), forwardPhoneNames[1], "The ring group include " + forwardPhoneNames[1]);
        assertEquals(phoneLabels.size(), 2, "The ring group size is 2");
        assertFalse(ringGroup4.isMoveUpButtonEnabled(), "The ringGroup move up button is disable.");
        assertTrue(ringGroup4.isMoveDownButtonEnabled(), "The ringGroup move down button is enable.");
        logBusiness("1.2 Move the group at the middle of list using ‘\\/‘ arrow > Save > Check arrows for this group at the \"Call Handling & Forwarding\"");
        ringGroup4.moveGroupDown();
        ringGroup4 = ss.getUserCallHandlingComponent().getRingGroupByLabel(hours, firstDeskPhoneLabel);
        ss.getUserCallHandlingComponent().save();
        openCallForwarding(hours);
        assertTrue(ringGroup4.isMoveUpButtonEnabled(),"The ringGroup move up button is enable.");
        assertTrue(ringGroup4.isMoveDownButtonEnabled(), "The ringGroup move down button is enable.");

 解析:

 对象引用 ringGroup4

ringGroup4 = ss.getUserCallHandlingComponent().getRingGroupByLabel(hours, firstDeskPhoneLabel);
获取到第一个位置的ringGroup,

若 ringGroup4.moveGroupDown();

此时RingGroup自身类成员发生改变, ss.getUserCallHandlingComponent().getRingGroupByLabel(hours, firstDeskPhoneLabel);获取到的实例也被改变, 而ringGroup4 还是指向原来的对象

所以此时ringGroup4需要重新指向。

 

参考:http://www.2cto.com/kf/201304/199505.html

student stu1 = new student();

    通常把这条语句的动作称之为创建一个对象,其实,它包含了四个动作。

    1) 右边的"new student" ,是以student 类为模板,在堆空间里创建一个student 类的对象( 也简称为student 对象) 。

    2) 末尾的() 意味着,在对象创建后,立即调用student 类的构造函数,对刚生成的对象进行初始化。

构造函数是肯定有的。如果你没写,Java 会给你补上一个默认的构造函数。

    3) 左边的"student stu1" 创建了一个student 类引用变量。所谓student 类引用,就是以后可以用来指向某个

    4)"=" 操作符使对象引用指向刚创建的那个student 对象。