You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中ArrayList实例化报错求助:语法错误问题排查

解决ArrayList泛型声明的语法错误问题

嘿,我一眼就看到你代码里的问题啦——泛型的声明位置写错了,这就是导致那个syntax error on token "(", Expression expected after this token错误的原因。

错误原因分析

你写的代码行:

persons = new ArrayList () < personInfo > ();

Java里泛型的尖括号<>应该紧跟在类名ArrayList后面,而不是放在构造方法括号之后。正确的泛型初始化语法是把类型参数放在类名和构造方法括号之间。

修正方案

有两种正确的写法可以选:

  1. 明确指定泛型类型(适用于所有Java版本):
persons = new ArrayList<personInfo>();
  1. 使用菱形运算符<>(Java 7及以上版本支持,编译器会自动推断泛型类型):
persons = new ArrayList<>();

修正后的完整AddressBook类代码

import javax.swing.*;
import java.util.*;
public class AddressBook {
    ArrayList<personInfo> persons;
    public AddressBook() {
        // 这里已经修正了泛型的写法
        persons = new ArrayList<personInfo>();
        // 或者用更简洁的菱形运算符:persons = new ArrayList<>();
    }
    public void addPerson() {
        String name = JOptionPane.showInputDialog("Enter Person Name");
        String add = JOptionPane.showInputDialog("Enter Address");
        String ph = JOptionPane.showInputDialog("Enter Phone Number");
        personInfo p = new personInfo(name, add, ph);
        persons.add(p);
    }
    public void searchPerson(String n) {
        // 因为已经用了泛型,这里不需要再强制类型转换啦
        for (personInfo p : persons) {
            if (n.equals(p.name)) {
                p.print();
            }
        }
    }
    public void deletePerson(String n) {
        // 注意:用普通for循环删除元素时要注意索引偏移问题,这里推荐用迭代器更安全
        Iterator<personInfo> iterator = persons.iterator();
        while (iterator.hasNext()) {
            personInfo p = iterator.next();
            if (n.equals(p.name)) {
                iterator.remove();
            }
        }
    }
}

额外的小建议

  • Java的类名规范是大驼峰命名法,所以personInfo建议改成PersonInfo,这是行业通用的编码规范,能让代码更易读。
  • 在searchPerson方法里,因为我们已经给ArrayList指定了泛型类型,所以不需要再做(personInfo)的强制类型转换,直接遍历即可。
  • 在deletePerson方法里,原来的普通for循环删除元素可能会导致漏删(因为删除元素后后面的元素会前移,索引会错位),用迭代器Iterator删除是更稳妥的做法。

内容的提问来源于stack exchange,提问作者user7418416

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:06:54