发表于: 2018-03-24 18:23:53

1 568


Seventh-day


学到这里了,有点意思了,也有点虚了。前面的都挺简单,后面的慢慢复杂,有些东西不经过项目的历练是不能够理解的。而前面的东西是不经过项目也可以理解的很好的,干吧


今日任务:


1. IBM 线程部分

2. 反射

3.Maven

4.Spring

5.mybatis


学习报告:


1. IBM 线程剩下部分,这一部分又看了一些,但是没什么收获,只是再认识,其实还是没有认识,哈哈

2. 反射,没别的google前三篇,看完再说

2.1 第一篇,没看懂

2.2 第二篇,懂了,java的反射就是运行时,感觉是这样的

a. 通过一个对象获得完整的包名和类名,比如下面代码,通过hel对象的getClass()和getName()方法获取到了该对象所有的包名和类名

为此,找了下 Class API(java.lang.Class<T>) 方法原型:public String getName()  验证了一下API文档的描述,大概的意思就是如果调用getName方法的对象是个数组,那么会有 “[” 来表示,然后后面根据数组内元素不同类型输出不同信息

getName 是 java.lang.Object 类中的方法,原型是 public final Class<?> getClass(),对这个方法的描述让我觉得反射就是运行时“Returns the runtime class of this Object."。这里重点说明了是runtime时期,就表明如果 Object person = new Person(); 那么这个方法返回的class应该是Person。验证一下,果然是这样。很遗憾这个API文档只能看懂这些了。后面的没看懂



b. 通过反射创建对象,这里分别创了了三个hel对象


以外收获:当我打断点是时候在控制台没有发现对象列表,但是调试控制台可以通过 print 命令输出当前对象状态,这个很nice。希望IDEA也要这个功能

c. 重写Object类的 toString 方法,修改类的print输出

d. 通过Class实例化其他类的对象

阅读forName的API,抛出的错误有连接错误和初始化错误,以及一个class not found 异常


e. 通过 Class 调用其他类中的构造方法(又采坑了)... ...

e.1 java.lang.reflect.Constructor; 必须手动导入,否则不能找到

e.2 cons 中的方法是倒序的,这样写全是null

通过 print 输出 cons 中的对象为:

而我在Person类中写的构造方法的顺序为:

顺序是逆序,同时这个东西不稳定,如果以后乱序了怎么办? 继续探查 ... 



要解决的问题:


1.  public final Class<?> getClass() ,这里面 <?> 代表什么意思???, <> 应该是泛型, ? 呢,难道是通配符类的表示任何类型的泛型。。。。

2. 反射中构造方法的获取问题


思想汇报:


1. 感觉可以每天好好看看API了,这个API文档对某些问题说的很明确,博客前言不敌API一语。

2. 反射基本上搞懂了,就是其他地方的运行时机制。Java中应该是通过他去做一些你看不到的事情,或者是你没有办法直接去做,只能通过这么一种管道的方式去做,或者透明的方式。

3. 今天坐下突然有种狗咬刺猬的感觉,面对茫茫的Java世界,真是TM无从下口,每个地方都是盲区,看了大半天的反射,找了下资料,又有方向了,路在脚下,不知道怎么走,就硬着头皮找到一个点钻研下去,触类旁通,走着走着就知道方向了。


明日计划:


1. 回顾下

2. 几日没看的那三个地方,资料已经找到,明天看

3. 书还是要看的 java 经典,列个java树表,一本本看

4. 反射剩下的部分继续看


DONE!!!


返回列表 返回列表
评论

    分享到