java的初始化研究:android开发中遇到的一个奇怪问题
2015-08-25 11:54
711 查看
我有一个Dialog的基类,然后有数个继承于他的子dialog。在基类dialog中写的一个View.OnFocusChangeListener我把它原样复制到子类中,再把其赋值给Edittext引用却发现,无法响应,编译运行都没有出错,就只是单纯的没有响应。经过调试发现并没有运行到其内部代码,但在父类时是可以引用正常的。
经过推敲可能是java的初始化流程的问题。
java初始化流程机制整理如下:
第一步:初始化基类的静态变量,从static代码块开始(如果有),然后根据声明顺序初始化基类的static变量。
第二步:初始化子类的静态变量,也是从static代码块开始(如果有),然后根据声明顺序初始化基类的static变量。
第三步:初始化基类的成员变量,按照声明顺序
第四部:执行基类的构造方法
第五部:初始化子类的成员变量,按照声明顺序
第六不:执行子类的构造方法
First.java
Base.java
Entity1.java
Entity2.java
主程序DefaultMain.java
经过推敲可能是java的初始化流程的问题。
java初始化流程机制整理如下:
第一步:初始化基类的静态变量,从static代码块开始(如果有),然后根据声明顺序初始化基类的static变量。
第二步:初始化子类的静态变量,也是从static代码块开始(如果有),然后根据声明顺序初始化基类的static变量。
第三步:初始化基类的成员变量,按照声明顺序
第四部:执行基类的构造方法
第五部:初始化子类的成员变量,按照声明顺序
第六不:执行子类的构造方法
First.java
import entity.Entity1; public class First extends Base { static { System.out.println("First static"); } private Entity1 e1 = new Entity1(); public First() { System.out.println("First"); } }
Base.java
import entity.Entity2; public class Base { static { System.out.println("Base static"); } private Entity2 e2 = new Entity2(); public Base() { System.out.println("Base"); } }
Entity1.java
package entity; public class Entity1 { public Entity1() { System.out.println("Entity1"); } }
Entity2.java
package entity; public class Entity2 { public Entity2() { System.out.println("Entity2"); } }
主程序DefaultMain.java
public class DefaultMain { public static void main(String[] args) { First f = new First(); } }
相关文章推荐
- android ip地址,手机号码,邮箱格式验证
- Android listview 属性解析
- Android中的AlarmManager的使用
- Android View的绘制之 从源码了解measure的过程。
- Android Studio 开发常用快捷键
- Android上下文菜单,长按出现的菜单
- Android事件传递机制
- Android ListView 单条刷新方法实践及原理解析
- AndroidUtils之FontUtils字体工具类
- android 多分辨率适应
- Android的任务和回退栈
- Android 编程下 Touch 事件的分发和消费机制
- Android版:验证手机号码的正则表达式
- Android笔记:反向横屏
- Android-ViewFlipper(图片轮播 和 手势控制 实例)
- Android 单元测试(四)测试 Activity和Fragment
- android listview去掉分割线
- 阿里百川Android应用
- Android-Code-Style
- Android 单元测试(三)总结