Structure结构
上面有说, 可以通过 Alt + 7 快捷键 调出来。
个人觉得, 这个对于查看代码结构,还是很方便的。直接可以看到代码的大体结构。
我们以 android-23 的 View 类,为例
右侧2个箭头
【箭头向下 指向横线】
选中后, 我们点击左侧,具体的类 或者 接口。 我们发现右侧会跟着移动
取消选择以后,可以发现不会跟着移动
【箭头向下 指向横线】,表示随着左侧点击,右侧自己查找类和方法
【横线指出 向下箭头】
选中后, 我们点击右侧, 具体代码位置。 发现也会到对应的位置。
同理, 取消后,就不存在了
【横线指出 向下箭头】,表示随着右侧点击,左侧查找所在类和方法
或者总体自己理解
横线,表示代码。 一个是选择后,去找代码。 一个是从代码,去找位置
展开合并
我们【点击Expand All,展开全部】
可以发现,左侧全部展开了
【点击 Collapse All, 合拢全部】
可以发现,左侧全部合拢了
这2个,表示左侧 全部合拢, 全部展开
匿名类
显示匿名类
具体匿名类概念,这里就不描述了,属于基础,可以参考
http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
显示继承
选择之前,是这样的
选择之后,可以发现,浅灰色的方法,都是继承自父类的(双击,可以进入父类查看)
显示非公开
点击前,我们可以看见左边有一些类
点击后,我们可以发现, 一些private等的类,也可以看见了
这里,我们可以看见 DeclaredOnClickListener 私有静态类
(都说反射效率低, 但是可以发现 很多底层的类, 都大量运用反射)
取消点击后, 我们在左边就看不见对应的类了
显示属性
这里f , 就是 field的意思, 也就是 属性, 当然,我觉得理解成 字段 也挺好。
点击前,我们只能看见 类,接口和方法
点击后,我们可以看见对应的属性
按属性排列
这里P,是 Property。
自己 理解 Property属性, 和 Field的区别。
(Property是对外的, 通常是为了让外面知道,通常有setter或getter)
(Field 不存在对不对外, 类中需要存储, 都属于Field)
(自己参考:Properties and fields are the same, except a property is a settable/gettable field)
我们拿android-23的View 的 setOnClickListener() 方法举例。
我们调整成, Autoscroll from Source
也就是,【横线指出 向下箭头】, 通过源码去移动左侧的标记
当我们点击【P】的时候
我们可以发现,左侧 把对应的方法
放置到了 属性 onClickLister: OnClickListener 下面
这样, 我们可以按 Property属性去了解作者的代码想法
按实现归类
这个符合,自己看不太清楚, 感觉 像一个【I】,也就是 Interface的意思
我们可以发现, View 实现 3个接口, 2个类的内部接口Callback, 一个公开接口AccessibilityEventSource
拿 KeyEvent的内部接口为例:
onKeyDown 方法 是经常用的
我们在View中, 找到实现
这个时候,左侧方法是单独排列的。
当我们点击 【I】的时候,
我们可以发现,是按接口类型, 排列
这样, 当一个类实现多个接口的时候
可以清楚看出哪些方法是实现哪个接口
按字母顺序排序
按字母顺序排列, 这个比较好理解
点击后,就按字母顺序排列
按是否可见排列
要按可见度排序, 要先打开 show non-public【显示非公开】
我们以装载 OnClickLister的 静态内部类 ListenerInfo 举例(没有修饰符,是不可见的)
这个时候,我们没点击 可见度排序 前
我们发现 ListenerInfo 是按 代码排序的, 比较靠前
点击后:
就按可见度排序,排到后面了
其他表示
访问权限
访问权限修饰符修饰成员变量和方法
- public:表明该成员变量和方法是共有的,能在任何情况下被访问。
- protected:必须在同一包中才能被访问。
- friendly:在一个包中或者子类中才能被访问。(可以不写)
- private: 只能在本类中访问。
我们看见在【m】后面(当然,类和接口后都有)
有这4中,也就是分别代表上面的四种修饰符
-
public:
-
protected:
-
friendly:
-
private:
其他1
Field:字段属性
Method:方法
Class:类
Interface:接口
其他2
这里比较多, 就拿 方法m 来举例子:
final:
static: