Этот метод от JDK имеет смысл для всех?
Я наткнулся на этот метод в JDK
Из com.sun.org.apache.xml.internal.serializer.Version;
public static int getDevelopmentVersionNum()
{
try {
if ((new String("")).length() == 0)
return 0;
else
return Integer.parseInt("");
} catch (NumberFormatException nfe) {
return 0;
}
}
Это что-то большее, чем return 0
?
Я чувствую, что у меня что-то не хватает. Я могу только предположить, что это сгенерированный код.;)
Ответы
Ответ 1
Похоже, что этот файл создается из следующего Version.src
file путем текстовой подстановки. Поэтому, когда переменная @[email protected]
пуста, генерируется код, о котором идет речь. length()
требуется проверка, чтобы в этом случае вернуть 0.
Ответ 2
Я думаю, что ""
заменяется некоторой строкой из файла конфигурации перед выпуском. В этом случае он пуст, но может также содержать число. Если вы считаете ""
переменной, этот код имеет смысл.
Ответ 3
javadoc в методе указывает, что он предназначен для обозначения падения развития, которое выполняется в процессе. Поэтому я бы сказал, что он имеет такой же смысл, как и все, что предназначено только для внутреннего развития. Может быть, они "смывают" любую фактическую информацию о версии из этого метода после их выпуска. В любом случае, я бы не придавал этому значения. Если вы не являетесь разработчиком oracle, работая над этим конкретным пакетом.
Ответ 4
Да, возможно, есть генератор/препроцессор, который выводит строку в обоих случаях.
Если эта строка является числом, метод возвращает свое значение как число. Если он пуст (как в этом случае) или не является числом, он возвращает 0.
Ответ 5
Похоже, что исходный xalan имеет аналогичную реализацию - по крайней мере, я нашел те же строки для xalan 2.7.1 на grepcode
Это действительно не имеет никакого смысла, для больших усилий для метода, который всегда возвращает 0
;) Но, глядя на javaDoc Version
и этот метод, создается впечатление, что все это (или была) незавершенная работа - своего рода заглушка для реализации, где можно просто ввести (hardcode) номер версии. Пока что блок else и блок catch являются недостижимым кодом.
Возможно, Version.java
будет/будет автогенерироваться, и процессор может генерировать этот метод с реальным значением вместо ""
- в этом случае было бы целесообразно защитить метод, поскольку значение из файла конфигурации может не быть представляют собой целое число.