使用反射可以使集合(列表)的大小小于0吗?

时间:2014-02-05 17:45:49

标签: java reflection collections

我们可以将列表的大小小于0.我们可以使用反射来使列表或Map的大小小于0.

2 个答案:

答案 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;
}

但你也不必在意。没有人会这样做。