注意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 对象。

注意java的对象引用

时间: 2025-01-07 08:03:39

注意java的对象引用的相关文章

Java超类对象引用访问子类对象

下面举例进行分析:  Student st=new Student();//Student为子类 Person p=st;//Person 为超类 p.sayHello();//该方法在超类和子类中都存在 分析: * 为什么子类的类型的对象实例可以覆给超类引用? 自动实现向上转型.通过该语句,编译器自动将子类实例向上移动,成为通用类型Person:  *p.sayHello()将执行子类还是父类定义的方法? 子类的.在运行时期,将根据p这个对象引用实际的类型来获取对应的方法.所以才有多态性.一个

(JAVA指针),对象引用问题

引出指针 从表面上看JAVA是没有指针的,或者是说,弱化了指针.但是指针在JAVA中还是真真切切存在的.在Java中我们称之为引用. String a;//引用为空 String a  = new Srting("");//内容为空 a指向一个句柄(两个指针),一个指向对象的方法表和类,一个指向对象的数据. 2.对象的克隆 问题: String s1 = new String("我是一个Sting"); String s2 = s1; 实际上s1和s2指向的是同一个

关于java内存泄露的总结--引用的类型:强引用,弱引用,软引用

今天面试了一家公司的java开发方面的实习生,被问到一个问题:如何处理java中的内存泄露问题,保证java的虚拟机内存不会被爆掉,当时其实觉得面试官的问题有点泛,所以也没有很好领会他的意思,答案也不是很准确,后来回去查了下资料,大概明白面试官要问的东西是什么(尴尬,才反应过来),然后,也特地简单总结下java内存溢出的相关内容,以备之后复习. 一.什么情况下会java内存泄露? java不是有GC吗?为毛还会内存泄露?之前我也一直以为,java有垃圾回收器在,估计内存泄露的情况一般不会发生吧?

javascript与java的不同之处

javascript与java的不同之处 虽然很像,但不是一种语言. 二者的区别体现在: 首先,它们是两个公司开发的不同的两个产品,Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发, 而JavaScript是Netscape公司的产品,其目的是为了扩展Netscape Navigator功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言. 其次,JavaScript是基于对象的,而Java是面向对象的,即Java是一种真正的面向对

Java语言概要

Java把源代码(SourceCode)翻译成字节码(ByteCode):javac MyClass.java,再在Java虚拟机(JVM)上执行字节码:java MyClass. Java是基于面向对象编程(OOP)的,OOP的三原则是封装(Encapsulation).继承(Inheritance)和多态(polymorphism),封装是为了捆绑数据和代码,继承是为了层次化分类,多态是为了“一个接口,多种方法”. 在Java文件中,主类的名称(MyClass)和文件的名称(MyClass.

【译】Core Java Questions and Answers【1-33】

前言 译文链接:http://www.journaldev.com/2366/core-java-interview-questions-and-answers Java 8有哪些重要的特性 Java 8发布于2014年3月,这块内容在Java面试中非常常见.如果你能清晰的回答这方面的问题,说明you are not out,喜欢学习最新的技术.Java 8是继Java 5的注解和泛型之后所做的最大的改动,主要的新特性如下: 1.接口支持静态方法和默认方法 2.函数式接口和Lambda表达式 3

java中,只声明一个对象不赋值,与声明一个对象并赋为 null 的区别

比如: public MainGame   mMainGame ; 与 public MainGame   mMainGame = null;这两句的区别? 编译的时候会不同,未赋值,直接使用编译时会报错. 不赋值就不会分配空间,赋值null会分配0大小的初始空间. 局部变量要赋初始值,全局变量不需要赋初始值:还有int a=null;这句,应该是Integer a=null; 如果在类中声明变量可以不赋值,构造对象时会获得默认值 如果在方法中声明变量,必须赋初始值 作为成员变量来说 int a

jsp js java

Java技术 J a v a是一种 简单易用. 完全面向对象. 具有平台无关性且 安全可靠的主要面向I n t e r n e t的开发工具. 自从1 9 9 5年正式问世以来,J a v a的快速发展已经让整个We b世界发生了翻天覆地的变化.随着Java Servlet的推出,J a v a在电子商务方面开始崭露头角,最新的Java Server Page技术的推出,更是让J a v a成为基于We b的应用程序的首选开发工具.要学习J a v a技术中的Java Server Page,J

Android NDK开发篇(四):Java与原生代码通信(原生方法声明与定义与数据类型)

Java与原生代码通信涉及到原生方法声明与定义.数据类型.引用数据类型操作.NIO操作.訪问域.异常处理.原生线程 1.原生方法声明与定义 关于原生方法的声明与定义在上一篇已经讲一点了,这次具体分析一下.依据javah自己主动生成的头文件.能够看出原生方法的声明和定义,比如: JNIEXPORT jstring JNICALL Java_com_shamoo_helljni_HelloJni_stringFromJNI(JNIEnv *, jobject); 虽然Java上的原生方法没有不论什么