2016-06-27 8 views
-4
19:45:37.624 [main] ERROR c.s.s.z.c.w.r.MP - Error while updating table:  MyFile, Error: java.lang.NullPointerException 
java.lang.NullPointerException: null 
    at java.util.Objects.requireNonNull(Unknown Source) ~[na:1.8.0_91] 
    at java.util.Arrays$ArrayList.<init>(Unknown Source) ~[na:1.8.0_91] 
    at java.util.Arrays.asList(Unknown Source) ~[na:1.8.0_91] 
    at com.sl.sy.z.MU.getLM(MU.java:367) ~[classes/:na] 
    at com.sl.sy.z.rr.MP.searchInP(MP.java:556) ~[classes/:na] 
    at com.sl.sy.z.rr.MP.processR(MP.java:166) ~[classes/:na] 
    at com.sl.sy.z.rr.RRMUpdate.processRR(RRMUpdate.java:139) [classes/:na] 
    at com.sl.sy.z.RREReader.main(RREReader.java:101) [classes/:na] 

ここはエラーです。なぜこのエラーが表示されるのか教えてください。 、あなたがやっているように見える何である、しかし、このコードJavaコードでXMLファイルを更新する際のエラー

List<?> list = Arrays.asList(null, null); 

安全ではありません:

+1

http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it –

+3

コードは表示されません'com.sl.sy.z.MU.getLM'(MU.javaの367行目)で' Arrays.asList(null) 'を呼び出すのと同じように、 – Krease

答えて

1

このコードは安全です

List<?> list = Arrays.asList(null); 

この理由は、それは、Arrays.asListですvarargsメソッドです。 varargsのシーケンスは、単に配列の代替表記であるため、実際の定義はasList(T... a)ですが、その定義はasList(T[] a)とほぼ同等です。複数の引数または型がObjectではない1つの引数を渡すと、Arrayクラスの他のメソッドが一致する可能性があることがコンパイラによって分かっているため、複数の引数から暗黙的に配列を作成することがわかります。

ただし、単一のnullには型がないため、オブジェクトとしてしか推論できません。 nullオブジェクトは、配列を含むどのような型でも構いません。コンパイラは自動的に調整されたコードよりも明示的なコードを優先し、コンパイラがメソッド呼び出しの目的で配列にインテリジェントに組み込むはずのヌルではなく、ヌル配列を渡そうとしていると仮定します。

最も簡単な解決策は、Arrays.asList(null)をCollections.singletonList(null)に置き換えることです。

0

解決に感謝します。しかし、私は上記の質問に対する答えを見つけました。 私の場合、それは私がデータを読んでいるところのExcelシートに関連していました。 XMLデータからセルの内容を読み取るために割り当てられた変数は、値がのコンマが含まれている場合にチェックしていましたが、セルのデータにコンマを含む値が含まれていないため、 "

関連する問題