Java初学者求助:ArrayList<String>的add(String)方法传参报错问题
解决ArrayList add方法报错的问题
嘿,刚看到你的问题,作为Java初学者碰到这种泛型相关的报错很正常,我来给你掰扯清楚~
首先先拆解一下你看到的错误提示:
"The method add(String) in the type ArrayList
is not applicable for the arguments()"
这句话的核心意思是:你声明的ArrayList<String>是一个只能存储字符串类型元素的集合,它的add方法要求必须传入一个String类型的参数,但你调用add()的时候要么没传参数,要么传的参数不是String类型,所以编译器直接给你亮红灯了。
下面给你两种最常见的解决场景:
场景1:你确实想往集合里存字符串
那你要检查自己的调用代码,是不是写了类似list.add();这种空参数的调用?这肯定不行,必须给add方法传一个字符串进去,比如:
import java.util.ArrayList; public class EventDemo { public static void main(String[] args) { // 声明只能存String的ArrayList ArrayList<String> eventList = new ArrayList<>(); // 正确调用:传入String类型的事件名称/描述 eventList.add("校园秋季招聘会"); eventList.add("Java编程竞赛宣讲会"); // 打印验证 System.out.println(eventList); } }
场景2:你想存自定义的事件对象(比如自己写的Event类)
那问题出在你一开始声明ArrayList的泛型类型错了!如果你有一个自定义的Event类,那应该把ArrayList的泛型指定为Event,而不是String,这样才能添加你的事件对象,示例代码如下:
import java.util.ArrayList; // 自定义的Event类,包含事件的属性 class Event { private String eventName; private String eventTime; // 构造方法初始化事件 public Event(String eventName, String eventTime) { this.eventName = eventName; this.eventTime = eventTime; } // 重写toString方便打印查看 @Override public String toString() { return eventName + " | 时间:" + eventTime; } } public class CustomEventDemo { public static void main(String[] args) { // 声明泛型为Event的ArrayList,专门存自定义事件对象 ArrayList<Event> eventList = new ArrayList<>(); // 添加自定义的Event对象 eventList.add(new Event("校园秋季招聘会", "2024-10-15")); eventList.add(new Event("Java编程竞赛宣讲会", "2024-10-20")); // 打印验证 System.out.println(eventList); } }
最后再提醒一下:如果是其他情况(比如你传了整数、布尔值这类非String类型给ArrayList<String>的add方法),那你需要把参数转成String类型,比如用String.valueOf(123)把整数转成字符串再添加。
内容的提问来源于stack exchange,提问作者user9193496
相关产品推荐
相关产品推荐

