Java泛型

泛型定义 先看这样一个例子: public static void main(String[] args) { List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); for (int i = 0; i < list.size(); i++) { System.out.println((String)list.get(i)); } } ArrayList集合中可以加入任何类型的对象,我本意是用这个集合来存储字符串(因为ArrayList默认存储的是Object类型的对象,所以输出时需要强转 ),但我粗心的写错了list.add(123),在我运行后发现报错java.lang.ClassCastException,显然报错原因就是输出时Integer类型并不能强转为String类型。那么如何避免这种情况呢,答案就是泛型。 ...

2025年10月14日 · 9 分钟 · 4469 字 · withdong02

Java反射

什么是反射 在spring项目中,只需要写个@Service或者@Component,然后在别的地方用@Autowired声明一个接口变量,Spring就能返回给我们一个实现了该接口的具体对象。这是如何实现的呢?它不可能在编译时就知道加了注解的类与类之间的关系,所以只能是在程序启动运行时,Spring动态地发现了这些类,读取了他们的结构,然后创建对象。这背后的技术支撑又是什么?答案就是反射。 ...

2025年8月10日 · 7 分钟 · 3295 字 · withdong02

Java序列化与反序列化

什么是序列化和反序列化 序列化,人话讲就是将对象转换为字节序列(也可以是JSON、XML等文本格式),反序列化就是把这个过程倒置。 下面是维基百科关于序列化的介绍 序列化(serialization)在计算机科学的资料处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。依照序列化格式重新获取字节的结果时,可以利用它来产生与原始对象相同语义的副本。对于许多对象,像是使用大量引用的复杂对象,这种序列化重建的过程并不容易。面向对象中的对象序列化,并不概括之前原始对象所关系的函数。这种过程也称为对象编组(marshalling)。从一系列字节提取数据结构的反向操作,是反序列化(也称为解编组、deserialization、unmarshalling)。 ...

2025年7月7日 · 7 分钟 · 3098 字 · withdong02