为什么ArrayList没有getSize()而不是size()?

Mat*_*hew 5 java jsp javabeans

我在一些JSP页面中大量使用ArrayList.我想像这样访问一个ArrayList:

${myArrayList.size}
Run Code Online (Sandbox Code Playgroud)

但由于对象必须符合JavaBean规范,其中myArrayList.getMyPropertyName()${myArrayList.myPropertyName}在JSP/JSTL,该myArrayList.size()功能是不可访问.

还有我应该使用的另一课吗?

更新:

有一点很难接受一个功能,例如在JSP中获取ArrayList的大小只是为了更清晰的一个衬里,但似乎设计师选择的其他原因.size()而不是.getSize()

我想如果您有支持${fn:length(myArrayList)}${myArrayList.getSize()}语法,这确实不是问题.

rua*_*akh 11

标题说明了一切:为什么ArrayList没有getSize()而不是size()?

如" Java Collections API Design FAQ "中所述:

为什么不使用"豆式名称"来保持一致性?

虽然新收集方法的名称不符合"Beans命名惯例",但我们认为它们是合理,一致且适合其目的的.应该记住,Beans命名约定不适用于整个JDK; AWT确实采用了这些惯例,但这个决定有点争议.我们怀疑集合API将被普遍使用,通常在一行代码上进行多次方法调用,因此名称很短很重要.例如,考虑Iterator方法.目前,集合上的循环如下所示:

    for (Iterator i = c.iterator(); i.hasNext(); )
        System.out.println(i.next());
即使Collection名称是一个长表达式,所有内容都整齐地排列在一行上.如果我们将方法命名为"getIterator","hasNextElement"和"getNextElement",则不再是这种情况.因此,我们采用了"传统的"JDK风格而不是Beans风格.

  • @Matthew使用getSize()肯定不会*替换*,但不管怎样,我怀疑你的项目的时间轴不能承受JDK更改所需的时间. (3认同)

ska*_*man 5

您使用fn:lengthJSTL函数(请参阅文档).

首先,fn在JSP的顶部声明命名空间:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Run Code Online (Sandbox Code Playgroud)

然后:

${fn:length(myArrayList)}
Run Code Online (Sandbox Code Playgroud)