当我使用这段代码时,会编译报错:
row1 : String a = "[{\"\":62},{\"[0,1]\":97},{\"(1,2]\":92},{\"(2,3]\":79},{\"(3,+∞]\":57}]";
row2 : List hashMaps = JSON.parseObject(a, new TypeReference>(){});
当我把row2换成 :
List hashMaps = JSON.parseObject(a, new TypeReference>(){});
即TypeReference后面加大括号就不会报错了;
这是为什么阿?为什么会编译时就报错呢?不是很理解。在我看来TypeReference就是一个普通类,传递对象时后面还要加大括号,表示其子类,第一次见这种用法?编译即报错是怎么做到的呢?
求大神告知原因,谢谢
主要还是访问修饰符的原因;
只有公有(public)的构造方法才能哪里都可以new;
default(不加修饰符即可)的构造方法,只能同包下使用;
private 的构造方法,只能class内部使用;
protected的构造方法只能子类使用;
而TypeReference只有一个protected修饰的构造方法,所以只能子类使用;
希望对你有帮助...