import java.util.*;
public class T {
public static void main(String[] args){
ArrayList 《String》 l=new ArrayList<>();
l.add("dd");
l.add("aa");
l.add((new Date()));
/*这里会报错The method add(String) in the type ArrayList is not applicable for the arguments (Date)*/
String c=l.get(0);
l.set(1, "da");
System.out.println(l.get(2));
}
}
但是将l.add((new Date()));改成 l.add((new Date()).toString());以后就不会报错了。
toString方法不是自动调用的吗?为什么会报错啊?同时还想问一下toString()方法的自动调用的条件是什么?
希望可以尽量详细一点,谢谢!
补充:我想问的重点是:为什么这里toString()方法不会自动调用(就像int类和Integer类会在需要的时候自动转换),或者说toString()方法自动调用的条件都有什么?
是字符串链接的时候不是字符串类型的才会自动调用toString方法,其他对象方法你需要和方法参数需要的类型一致
toString()方法是将其转换成字符串,你的集合是String类型的,所以那样写会报错
按照你的说法add之后,如果调用了toString,那么被放入list中的就应该是个字符串,那么取出来就应该是个字符串了。
那么如果你本来是想add一个date又该如何做呢?
你好,string+object=string,只有对象或基本数据类型与string连接的时候才会自动转换成string类型,没有string类型参与的要toString()来转换,
或者你后面加一个双引号也行l.add((new Date()))+“”;
这个toString就是为了调用该方法将变量转换成字符串,所以需要你的转换类型保持一致才能通过
按道理是不会报错的,你泛型没有限制类型,add可以添加日期类型,除非你哪里重写了add方法,将参数改为String类型了。
还有ArrayList l=new ArrayList();最好使用向上转型 写成List l = new ArrayList();为什么向上转型,你可以百度。。。
因为任何类型存入list里面,都会被保存为Object类型,所以获取的时候要类型转换写成String c=(String)l.get(0);
import java.util.ArrayList;
import java.util.Date;
public class T {
public static void main(String[] args) {
ArrayList l = new ArrayList();
l.add("dd");
l.add("aa");
l.add((new Date().toString()));
/*这里会报错The method add(String) in the type ArrayList is not applicable for the arguments (Date)*/
String c = l.get(0);
l.set(1, "da");
System.out.println(l.get(2));
}
}
ArrayList l = new ArrayList();这一句要求l里只存存String类型,new Date()是Date类型不是String类型,所以会报错。
而new Date().toString()是String类型,因此可以往l里存。
博客的BUG导致《String》被去掉了。重写一下。
ArrayList《String》 l = new ArrayList《String》();这一句要求l里只存存String类型,new Date()是Date类型不是String类型,所以会报错。
而new Date().toString()是String类型,因此可以往l里存。
《 String》这个表示泛型,意思是集合中只能存放String这种类型,Date当然不是String类型了,但date.toString()方法会返回一个String.
如果你即想放String又想放Date 可以使用《Object》
< String>表示泛型,意思是集合中只能存放String这种类型,Date是对象,添加之后不是String类型,就会报错,,但date.toString()方法会返回一个String.那样就不会报错了
大兄弟 这么些天了 看我回答的这么卖力 望采纳啊 谢谢 ~~~~~