java arraylist结合泛型存储自定义对象需两步:声明arraylist并用推断类型,再add person实例;遍历时无需强转,可直接调用getname()等方法。

Java ArrayList 结合泛型存储自定义对象,关键在于两步:正确声明带泛型的 ArrayList 类型,并确保只添加该类型的具体实例。泛型不是可选装饰,而是编译期类型约束——它让 add() 方法只接受你指定的类的对象,避免运行时类型错误和强制转换。
声明 ArrayList 时明确指定自定义类类型
假设你有一个 Person 类(含 name、age 等字段),创建集合时必须写成:
ArrayList<person> people = new ArrayList();</person>- 右侧用
(菱形操作符)是 JDK 7+ 推荐写法,编译器自动推断类型 - 不要写成
ArrayList people = new ArrayList();—— 这是原始类型,失去泛型保护,后续取元素需手动强转,易出错
添加元素前必须先创建对象实例
ArrayList 的 add() 方法只接收一个参数,且必须是泛型声明的类型。不能直接传构造参数,也不能传多个值。
- ✅ 正确:先 new 出对象,再 add
Person p1 = new Person("李四", 25);people.add(p1);- ❌ 错误示例(编译不通过):
-
people.add("李四", 25);—— 参数个数/类型不匹配 -
people.add("张三");—— String 不是 Person 类型
遍历时无需类型转换,直接使用对象方法
因为泛型已保证集合中全是 Person 对象,所以遍历中可直接调用其方法:
- 增强 for 循环:
for (Person p : people) { System.out.println(p.getName() + ", " + p.getAge()); }- 普通 for 循环:
for (int i = 0; i- Iterator 遍历也同理,
it.next()返回的就是 Person 类型
确保自定义类具备基本结构
为了让对象能被合理存储和使用,建议你的类包含:
- 有参构造方法(方便初始化)
- getter 方法(用于读取属性,如
getName()) - 重写
toString()(便于调试打印) - 如需去重或查找,可考虑重写
equals()和hashCode()
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











