我们可以将列表的大小小于0.我们可以使用反射来使列表或Map的大小小于0.
答案 0 :(得分:3)
是。例如,在ArrayList
的源代码中:
private int size;
//...
public int size() {
return size;
}
将size
设置为某个任意值,size()
方法将返回该值。
请注意,这在很大程度上取决于集合的实现。
OP问:我想知道是否有任何可能,否则这些检查没有多大意义检查size() < 0
是没有意义的。如果你开始假设某人使用反射摆弄了JDK类的属性,那么你可以假设他们设置了Boolean.TRUE == false
......
查看使用反射的this (very dirty) hack更改整数缓存中的值,使Integer.valueOf
返回错误的int
。
答案 1 :(得分:1)
是的,通过反射,您可以设置名为size
的字段。
E.g查看ArrayList
的源代码。
private int size;
public int size() {
return size;
}
但你也不必在意。没有人会这样做。