2014-01-26 2 views
1

Мне не нравится, как страница Javadoc «Значения полей бит Contant» содержит строковые константы.Значения поля константы константы Javadoc для строк

Пример:

public static final String REGEXP_PATTERN = "^\\s*$"; 

На странице Javadoc эта константа будут перечислены со значением ^\\s*$, который я думаю, что это просто неправильно, это должно было быть ^\s*$.

Тот факт, что javac требует, чтобы \ был экранирован, не имеет значения. Значение поля - если вы зададите мне вопрос - это ^\s*$, и это то, что должен перечислять Javadoc.

Есть ли способ, которым я могу это достичь?

Проблема в том, что - верьте или нет - наша документация Javadoc также используется людьми, не являющимися Java. И для людей, не являющихся Java, просто не имеет смысла.

+1

Почему люди, не являющиеся java, читают javadoc? Он существует, чтобы помочь ** java ** программистам ... И говорить о ** java **, ''^\ s * $ "' неправильно, потому что, если вы скопируете/вставьте это в код, он не будет компилировать – BackSlash

+0

" * Значение поля - если вы спросите меня - это «^ \ s * $" * ". Но если вы спросите Java, это «^ \\ s * $». – Maroun

+3

Рассмотрите другие escape-последовательности (например, tab; return,) управляющие символы и т. Д., Которые могут быть представлены в строковых литералах. Вы можете обнаружить, что значение теряется, если вы измените способ работы. Он также будет игнорировать ожидания любого разработчика Java, который смотрит на него. – McDowell

ответ

1

Есть ли способ, которым я могу это достичь?

Вы должны создать свой собственный доклета наследования по умолчанию один, беглый взгляд через relevant source code предполагает, что вам просто нужно будет предоставить собственный подкласс ConstantsSummaryWriterImpl которого getValue(FieldDoc) метод переопределяется использовать member.constantValue() вместо member.constantValueExpression().

Для подключения этого писателя в подходящее место, вы бы тогда необходимо также подкласс HtmlDoclet и переопределить configuration() вернуть свой собственный подкласс ConfigurationImpl, который в свою очередь возвращает свой подкласс WriterFactoryImpl, который в свою очередь возвращает свой собственный константы писатель, и наконец, используйте опцию -doclet, чтобы указать javadoc, чтобы использовать ее вместо стандартного доклета.

+0

Спасибо. Это путь. Мне жаль, что для этого не было простого перехода, но в качестве альтернативы нам, возможно, понадобится переосмыслить всю идею использования этой конкретной страницы Javadoc для других, кроме строго Java-людей. Не знаю. Но спасибо. – peterh

+0

@ nolan6000, если это просто для одного или двух конкретных классов, может быть проще написать небольшую программу Java, которая проходит через эти классы с API-интерфейсом отражения, чтобы извлечь соответствующие данные и построить '.csv' (или что-то еще), что ваши люди, не являющиеся Java, могут открываться в Excel. –

+0

Да, согласился. Как вы, возможно, догадались, мы используем эту страницу Javadoc, чтобы объяснить пользователям нашего программного обеспечения, что такое значения конфигурации по умолчанию. – peterh

0
public static final String REGEXP_PATTERN = "^\\s*$"; 

"\" - это просто символ escape для "\" - без него код не будет компилироваться.

+0

Спасибо за ответ. Но вопрос не в том, что означает '\\' в строковом литерале Java. – peterh

+0

«case« NUMBER », а затем« BIGDECIMAL »становится« case »,« NUMBER », а затем« BIGDECIMAL \ »- не только экранирование, которое не требуется для документации, но также добавляется ложно, если оно не принадлежит. – Grod

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