转载请注明出处:http://www.cnblogs.com/xunzhaorendaxia/p/8776857.html

本来以为这个bug快改不好了,然而发现了问题所在
copy代码没有完全改掉对象名称,导致对象重复创建了,由于是static所以debug过程中
注释了addProperty(gridRowDetailKeyProperty)
以及引用gridRowDetailKey ()的方法段;
 
public static PropertyDescription gridRowGroupKey = null;
public static PropertyDescription gridRowGroupKey(){
if( gridRowGroupKey== null ){
          // propertyDescription 初始化属性分别为:group section key title dataType visible enable editable
gridRowGroupKey= new PropertyDescription (PropGroup.GridRow, null, FormStrDef.D_GridRowGroupKey,
StringTable.getString(StringSectionDef.S_Form, FormDef..D_GridRowGroupKey),
JavaDataType.USER_STRING, " GridRowType == 'Group', true, true")
}
return gridRowGroupKey;
} public static PropertyDescription gridRowDetailKey = null;
public static PropertyDescription gridRowDetailKey (){
if( gridRowGroupKey== null ){
gridRowGroupKey = new PropertyDescription (PropGroup.GridRow, null, FormStrDef.D_GridRowDetailKey,
StringTable.getString(StringSectionDef.S_Form, FormDef.D_GridRowDetailKey),
JavaDataType.USER_STRING, " GridRowType == 'Fix', true, true")
}
return gridRoDetailKey;
}
 
对象还在,由于效果该属性当为分组行的时候出现
解释:第一次没注释前执行了gridRowDetailKey ()静态方法。使得对象gridRowGroupkey对象重新创建,
            注释后debug ,调用方法gridRowGroupkey()返回的对象已经新创建的对象了。
解决问题的心理表征:
        1.debug找到空指针报错出,发现是Decription为空
            猜测与Decription有关
        2.运行app发现当分组行时可见,后又重现一遍发现是固定行可见,猜测之前观测可能是误会属性名称"所属分组标识"&&"所属明细标识"
            猜测与之前copy的GroupKey属性有关系
        事后重现发现虽然注释的属性出现,但之前的所属分组表示属性已经不在;但是在找问题期间没有注意 
心得体会:
        1,少拷代码,尤其是static属性的,可能会导致别的对象和自己的对象都出问题
        2.  不要懒,多bebug去发现问题来源,出现控制针就去添加该对象的方法里加断点调式,如果是static对象更要注意重头开始运行debug
        才能看清对象创建过程。

copy代码(含static对象)留下的致命错误的更多相关文章

  1. IntelliJ IDEA平台下JNI编程(五)—本地C代码创建Java对象及引用

    本文学习如何在C代码中创建Java对象和对象数组,前面我们学习了C代码中访问Java对象的属性和方法,其实在创建对象时本质上也就是调用构造函数,因此本文知识学习起来也很轻松.有了前面学习数组创建的方法 ...

  2. 非静态代码块(非static初始化块)&静态代码块(static初始化块)

    非静态代码块: TestOrder: package com.aff.singleton; /* 类的第四个成员:初始化块(代码块) 代码块: 如果有修饰的话只能使用static 分类:非静态代码块: ...

  3. static对象的高级用法

    1. 函数里static对象是local的,其他如全局对象,类里的static对象都是非local的,会在程序初始化中提前创建 2. 非local的对象的创建无法确定先后次序,但能保证在main函数前 ...

  4. Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...

  5. python之实现ftp上传下载代码(含错误处理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...

  6. C/C++之全局、static对象/变量的初始化问题

    关于全局.static对象/变量的初始化问题 1. 全局变量.static变量的初始化时机:main()函数执行之前(或者说main中第一个用户语句执行之前). 2. 初始化顺序. 1)全局对象.外部 ...

  7. static对象

    1.static对象包括: global对象 namespace作用域下的对象 在class,function,file作用域内的static对象 2.在方法内的static对象成为 local st ...

  8. java中,静态代码块static的简单简介

    直接上代码,更直观,包括一些解释: /** * 类初始化时,首先加载静态代码块, * 注意:所有静态代码块都会在方法之前执行,不管放置的位置:但是静态代码块按照顺序执行 * 再次执行调用的方法 */ ...

  9. stack与heap、new的内存分配、static对象。(effective c++ 04)

    阅读effective c++ 04 (30页) 提到的static对象和堆与栈对象."不同编译单元内定义的non-local static对象". 了解一下.    目录 sta ...

随机推荐

  1. Activiti就是这么简单

    Activiti介绍 什么是Activiti? Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开 ...

  2. 使用netty的第一个Hello World

    server端 package com.netty.test;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.Cha ...

  3. Unity3D项目程序加密-VirboxProtector加壳工具

    各位Unity3D的开发者,你还为你的代码被反编译而头疼, 混淆和加密已经失效,为内存dump代码而烦恼?是否辛苦制作的游戏被盗版被抄袭而烦恼? 是否害怕算法被别人参考要把算法写成C++而费劲周折? ...

  4. 用python进行应用程序自动化测试(uiautomation)

    本文主要用到一个uiautomation的开源框架,是一个咱们中国人写的,支持MFC,Windows Forms,WPF,Metro,Qt界面:此文主要是自己的个人总结,开源作者原文:http://w ...

  5. 关于 Touchjs 手势识别事件库 this 关键字与选择器不对称情况

    Touchjs 版本 v0.2.14 废话不多,直接看代码,一个拖动实例 <div id="touch-drag"></div> <script ty ...

  6. 什么是IPFS?(三)

    前两篇介绍了IPFS的基本概念, 那么IPFS都可以用来做什么? 如果你认为仅仅是CDN, 永久的web? Are you kidding me ? IPFS可是要 --改变世界的... --变世界的 ...

  7. python自学日志--基础篇(1)

    从认识python,到学习python,中间经历了挺长一段时间的心理挣扎.人总是对未知的事物有着天生的恐惧感,但是,人又是对未知充斥好奇.所以在最后,还是推开了这扇门,开始学习python. pyth ...

  8. Redis TTL命令

    Redis TTL 命令以秒为单位返回 key 的剩余过期时间. redis TTL 命令基本语法如下: redis 127.0.0.1:6379> TTL KEY_NAME 当 key 不存在 ...

  9. linq分组求和_实体类和datatable

    1.数据分组求合,分别用的实体类以及datatable来分组求合,还有分组求和之后的如何取值 //实体类版本 List<ProgramTimeModel> TotalAllList = G ...

  10. IntelliJ IDEA的入门使用

    1 修改背景颜色 点击File,Settings 2 修改字体格式,以及字体大小 我个人习惯Eclipse的默认字体,所有把字体修改成Eclipse默认的Consolas 同上点击File,Setti ...