
我是Java的新手,我来自C背景.
我以为Java中的final就像C中的const一样工作,但我想不是.
在C中以const初始化的对象只能调用const方法,而不能更改对象中的字段.
但是在下面的代码中,我可以为pet赋值.即pet.ID = new ObjectID(newPetID);.
private voID addPet() { progressbar.setVisibility(VIEw.VISIBLE); final Pet pet; try { // Locally add and save pet. pet = getPetFromUserinput(); } catch (InvalIDinputException e) { progressbar.setVisibility(VIEw.GONE); return; } pet.ID = new ObjectID(); // Modify fIEld member directly. pet.updatename("MyPet"); // Call non-final method.}解决方法:
在评论中引用Erik的答案,我为C程序员找到了一个简单的解释.
宠物在Java中就像Pet * pet;在C中.
最后的宠物在Java中就像Pet * const pet;在C中,它使指针为const而不是值本身.
请注意,Java和C有细微的差别.
在C中,您必须在声明const变量时分配一个值,但是在Java中,它允许您稍后进行 *** 作,但只能执行一次.
总结以上是内存溢出为你收集整理的为什么标记为final的对象可以被修改并在Java中调用非final方法?全部内容,希望文章能够帮你解决为什么标记为final的对象可以被修改并在Java中调用非final方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)