0

下のポイントAでnullのチェックを行う必要があるかどうかを知りたかっただけです。その時点でnullになることはありますか?それとも、空/空ではないだけですか?

助けが必要な場合は事前にThx!

List myList = new ArrayList();
PreparedStatement ps = null;
ResultSet rs = null;
String sql ="SELECT * FROM XXXXX"; 

ps = getDBConnection.prepareStatement(sql);
rs = ps.executeQuery();

while (rs.next()) {
 //Add the row to myList using myList.add...
}

if (myList != null){ //POINT A
//Implement some logic
}

..
4

4 に答える 4

3

最初の行(List myList = new ArrayList();)で作成するため、明示的にnullを割り当てない限り、nullにすることはできません。

nullにしたい場合は、次のことを行う必要があります。myList = null

また、オブジェクトを作成するときに、コンストラクターが例外をスローした場合でも、オブジェクトはnullになる可能性があります。

MyObject obj = null;
try {
      obj = new MyObject(); // If an exception is thrown, the assignment is not done
}
catch (Exception e) {
  // Do something
}

// Here obj is null if an exception has been thrown

しかし、今ではあなたのコードに当てはまります。

于 2012-06-20T07:51:02.557 に答える
3

あなたArrayListは単なる参考です。nullもちろん、それは原則として指し示すことができます。ただし、あなたの例では、それをに直接割り当て、その間new ArrayList()に何も変更myListされないので、いいえ、nullになることはありません

于 2012-06-20T07:51:11.630 に答える
2

すでにで初期化myListmyList = new ArrayList()たので、次のようなことをしない限り、二度とnullになることはありませんmyList = null;

myList.addまた、その上のループを呼び出す場合はnullにすることはできません。そうしないと、が取得されNullPointerExceptionます。したがって、どこかでnullをチェックする場合は、whileループの上にある必要があります。

于 2012-06-20T07:54:32.470 に答える
2

nullにならないようにする場合は、次のように宣言します。

    final List myList = new ArrayList();

nullいずれにせよ、このメソッドの一部のコード(宣言後)が明示的にaを割り当てている場合にのみ可能ですnull

于 2012-06-20T08:02:18.343 に答える