为什么 Tomcat 的 LifyCycleSupport.java 使用数组而不是任何高级容器(ArrayList)来存储侦听器?

Why Tomcat's LifyCycleSupport.java use array to store listeners instead of any advanced containers(ArrayList)?

我最近在浏览tomcat的源代码,我发现在LifecycleSupport.java class中,它通过简单的数组存储监听器,

private LifecycleListener listeners[] = new LifecycleListener[0];

所以 add() 方法必须创建一个新数组来替换旧数组:

public void addLifecycleListener(LifecycleListener listener) {
   82   
   83         synchronized (listenersLock) {
   84             LifecycleListener results[] =
   85               new LifecycleListener[listeners.length + 1];
   86             for (int i = 0; i < listeners.length; i++)
   87                 results[i] = listeners[i];
   88             results[listeners.length] = listener;
   89             listeners = results;
   90         }
   91   
   92       }

我想知道使用数组而不是像 ArrayList 这样的高级 java 容器的目的是什么,因为执行 add/remove 操作要方便得多?

谢谢

根据我的说法,他们必须向旧版本 java 提供向后兼容性,以便旧 jre/jdk 感觉舒服 Tomcat.Otherwise 没有其他理由使用数组,但还有一件事要注意 ArrayList 在内部操作数组,所以没有改进 所以 ever.But 请注意这很明显 array[index]array.get(index).