Единственный раз, когда использовать java.sql.Date
- в PreparedStatement.setDate
. В противном случае используйте java.util.Date
. Он говорит, что ResultSet.getDate
возвращает java.sql.Date
, но его можно назначить непосредственно на java.util.Date
.
String.valueOf(null)
вызывает valueOf(char data[])
, что, в свою очередь, вызывает new String(data)
, который обращается к value.length
-> NPE.
String.valueOf(someString)
вызывает valueOf(Object obj)
, что делает return (obj == null) ? "null" : obj.toString();
Общее примечание: пожалуйста, используйте правильную IDE. Написание этого вопроса было не моим «знанием», а просто использованием моей IDE в течение ~ 1 минуты, чтобы увидеть, какие методы на самом деле будут вызываться, я даже не запускал код.