このエラーが発生します
java.lang.NullPointerException
at java.util.ArrayList.<init>(Unknown Source)
at de.mystuff.ExtendedArrayList.<init>(ExtendedArrayList.java:38)
ここで、ExtendedArrayList:38は
new ArrayList(new ArrayCollection<E>(data));
つまり、ArrayListコンストラクターは、自家製のコレクション実装ArrayCollectionを窒息させるように見えることがあります。
お客様に配布されたものとまったく同じバージョンでも、自分のコンピューターで再現することはできませんでした。
しかし、私たちが含めたJREを彼らが使用していることを100%確信しているわけではありません。だから、私はいくつかのArrayList.javaソースコードをグーグルで検索し、これを持っているopenJDK6b17を見つけました
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
データがない場合、ArrayCollection.toArray()はnullを返すため、これは理にかなっています。そして、このコンストラクターは、使用している1.5.0_09 Sun JDK / JRE実装に対して安全に見えました(そして例外なく機能しました)。
しかし、openJDKはUNIXの世界でしかリリースされていないようです。このコードもWindowsJREの一部ですか?もしそうなら、どのバージョンですか?
注意:クラスを修正する必要があることはわかっていますが、NullPointerExceptionの原因を確実に理解したいと思います。