今天学习Java犯了个低级错误,main函数的参数Stirng忘记加[],导致在idea平台无法编译运行。
这是源码。
import java.lang.reflect.Array;
import java.util.*;
public class test {
public static void main(String args){
Class c1 = new ArrayList<String>().getClass();
Class c2 = new ArrayList<Integer>().getClass();
System.out.println(args);
System.out.println("这是什么?");
System.out.println(c1==c2);
}
}
本意是为了研究泛型的擦除,但是却发现死活编译不出来,最后才发现args变成了Stirng而不是Stirng[]。
顺便研究一下String []args到底是什么。
将修改过的函数运行,使用 System.out.println(args);
查看println的源码会发现,它用了方法不同参数实现多态,其中传入args会调用println(object )的方法。
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
valueOf是个静态方法。 可以把对象转换为所需要的类型, Integer.valueOf("1005&#