空指针是指对象的数据结构和数据,java指针中内存中的值是为空,因为java每次存储的对象都会放在java缓存里面
Get 和 Post的放置参数的默认类型
- Get 默认RequsetParam
- Post 默认 RequsetBody
Java中的Optional使用
Optinoal.ofNullable(xxx).orElse(返回任意值不是return而是一个对象赋值)
String name = "";
return Optional.ofNullable(name).orElse("傻逼");
Optional.ofNullable(xxx).orElseThrow(()->new RuntimeException(xxx))
public String run1() {
String name = "";
return Optional.ofNullable(name).orElseThrow(()->new RuntimeException("dfjisaf"));
}
存在值就打印
Optinoal.ifParent(u->sout(打印))
判断对象中某一个值使用map
optionalUser. map(u -> u。getName( )) orElse( other: " anymos " ’ );
接口的静态方法和默认方法的区别
- 静态方法
在接口层面可以定义实现方法,不需要被子接口实现,且不能是现实,符合的
- 默认方法
在多个接口定义了相同名称的默认方法,必须实现默认方法的接口
接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。
序列化的问题
序列类,引用了非序列化的类型是不能影响非序列化进行序列化的
首先来说,你要明白序列化的意思喊意义是什么。序列化就是将 Java Object 转储成其他的格式,能够在网络上传播。你看到的文档就是序列化之后的数据,肯定是乱码不可读的。
序列化是对象的快照,你更改了属性,肯定会有影响。
同一个对象多次序列化且序列化对象属性发生改变怎么办
原理: 在序列化过程中,序列化会有一个算法,当每一次一个对象序列化完成并转换为字节序列同时会生成一个序列化编号,当对象重复的时候会重新调用生成后的序列化对象,就会产生多个相同的对象属性值不同,但是响应的结果都是第一次序列化的内容
类似于快照的性质
避免方式,重新创建对象,新建类
Java中泛型的操作(Java中是伪泛型)
泛型的初衷就是保证类型转换的操作
使用泛型会触发类型擦除
在Java编译期间会将泛型进行擦除,在编译成字节码文件的时候泛型就会消失。 所以在两个List上绑上不同的泛型进行比较的时候都是true
也可以说在添加的数据的时候不去添加泛型指定的类型
List<Integer> list
list.add(1)
list.getClass().getMethod("add",Object.class).invoke(list,"图片信息")
list.getClass().getMethod("add",Object.class).invoke(list,2321.2321)
// 就可以遍历展示
为什么泛型不能定义int类型
在泛型的类型擦除中 基本数据类型无法被Object类型接收 所以无法定义基本数据类型
泛型不能传递基本数据类型 只能传递引用数据类型
原因是类型擦除,主要是int[]基本类型泛型中无法被Object类型接受最终转换为int[]数组地址 相反 Integer[] 可以被接受
集合不建议使用原始类型 List结束建议添加泛型
原因是在展示的过程中是无法看到原始类型有什么问题,当判断的时候就会出现问题,解决方式就是添加Object类型泛型,或者添加类型中包含指定类型