2009-10-20 4 views
3

Есть ли какие-либо ошибки в JDK 6, которых не было в более ранних версиях? Мне интересно узнать некоторые неожиданные изменения, например, следующие в методе Timestamp.valueOf().Gotchas in JDK 6

Timestamp.valueOf(), если имеется метка времени, которая содержит дату или месяц с одной цифрой. например. 2009-9-20, 2009-9-3, 2009-12-4 и т. Д., Ведет себя по-разному в JDK 6 - он выдает исключение IllegalArgumentException, говорящее, что временная метка неправильно отформатирована. В то время как JDK 5 (и более ранние версии) работает очень хорошо, предоставляя правильные значения с «0», префиксными для этих чисел с одной цифрой.

JDK 6 просто строже, потому что метод ожидает, что его аргумент будет строкой в ​​формате escape-метки JDBC. Тем не менее, этот ПЕРЕРЫВЫ код, написанный на JDK 5.

код, как:

String s = "2009-9-1 00:00:00"; 
Timestamp t = Timestamp.valueOf(s); 

Однако JDK-прекрасно с часами, минутами, секундами быть однозначными числами. Я выяснил, что не так, посмотрев исходный код класса Timestamp в JDK 6. Я нашел массив intDate [], который инициализирован {4,2,2}, и длина каждого элемента в дате проверяется на это массив.

Теперь, почему часть времени работает нормально, даже если в них есть отдельные цифры? Потому что код, который проверяет длину на эквивалентный массив intTime [], закомментирован в источнике.

Класс Timestamp в JDK 5 не имел ни одной из этих проверок и отлично работает с такими входами.

Я не нахожу таких странностей, упоминаемых где-либо на официальном сайте. Хотя я нашел другого человека, у которого есть same problem. Эта проблема легко поправимо, и я заинтересован в обнаружении других подобных странных изменений, которые произошли в JDK 6.

+2

Что заставляет вас думать, что они есть? – skaffman

+0

Недавно я нашел один из них в методе Timestamp.valueOf(). Я добавлю детали в вопрос. –

+0

Это должно быть CW. – Geo

ответ

7

Официально this

EDIT

Кроме того, вы посмотрите на ошибку Sun может база данных.

Этот link показывает элементы в Java типа ошибки со статусом принятого и ключевые слова «1,6 1,5»

я проверить некоторые из них, и это выглядит как то, что вам нужно.

+0

@ Оскар: пример, в котором JDK 6. ведет себя непредвиденным образом. Я видел список несовместимостей на официальном сайте, прежде чем публиковать этот вопрос здесь, хотя я не счел его очень полезным. –

+0

Также следует отметить проблему с регрессией Mustang (я считаю, что все упомянутые вопросы исправлено до первого судна клиента). https://mustang.dev.java.net/regchal/ –

+0

@Vijay Dev: Я не знал, что вы проверили список перед публикацией (вы не упомянули об этом в исходном вопросе), я не знаю ни того, ни другого если вы уже заглянули в базу данных ошибок Sun. Вот ссылка http://bit.ly/3ZohZ5 – OscarRyz

Смежные вопросы