不是太细的java自学笔记进阶篇8(p619-661)(java网络编程,反射机制)
Table of Contents
目录:
上节内容补充:
网络编程:
端口号:
协议:
TCP/IP
网络编程案例:
UDP:
UDP案例:
URL:
反射机制(Reflection)
在运行时确定类的内部信息。
两个疑问?
当我们不能确定我们需要造什么样的对象时,也就是我们在程序运行时才能知晓我们的固定需求,才能确定需要什么类,那么我们就需要用到反射。
疑问2:反射机制是否和封装性矛盾?
不矛盾。反射解决的是能不能调用的问题,而封装性是不建议调用私有方法属性。但是如果你要调用也是可以。
关于Class类的理解
第一种方式没有体现出动态性,因为Person类已经写死了,在编译的时候就会寻找是否有这个Person类,如果没有就会出错,第三种方式使用的最多,第三种方法需要写全类的位置。
运行时类会存放在缓存区一定时间,我们可以用不同的方式获取这个运行时类,不同方式获取的运行时类相同。
维度表示一位数组或者二位数组
类的加载的简单理解
ClassLoader读取配置文件:
在配置web服务器是,如果我们的配置文件放到了module下,在部署到tomcat服务器之后配置文件会缺失,所以我们有两种解决方法:第一种方法就是使用ClassLoader方式进行文件配置,默认在当前Module下的src文件夹下。第二种方式是使用文件输入流,但是路径改成src下的路径获取,例如:
可以通过反射获取类的所有内容:包括属性,方法,注解,父类的属性方法注解,声明的接口的内容等
还可以获取类的构造器,举个栗子:
但是!!非常无聊基本不用
下面的可能会用到:获取运行时类的带泛型的父类的泛型,可能会用于数据库获取数据
获取接口可能会在动态代理中使用:
调用运行时类的指定结构(属性,方法)
操作属性:
操作方法: