Подтвердить что ты не робот

Почему нет java.io.Bits?

Я много сделал с IO в Java и, после поиска кода для преобразования примитивов в массивы байтов и обратно, нашел исходный код для java.io.Bits на одном из сайтов хостинга с исходным кодом Java. После быстрого взгляда я понял, что это именно то, что мне нужно, за исключением пакета-частного. Поэтому я сделал копию, которую я обнародовал, сохранен в моем пакете проектов и использовал (только в личных проектах, уверяю вас). Мне это очень полезно.

Мой вопрос: почему этот пакет-частный? Я вижу, что это действительно полезно для людей, которые работают с IO, и я не вижу недостатка в изменении его видимости для публики (в rt.jar). Или может быть эквивалент (и, пожалуйста, не упоминайте другие библиотеки)?

Здесь ссылка на случайно выбранный веб-сайт с источником Java для java.io.Bits: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/Bits.java

4b9b3361

Ответ 1

Вы должны были бы спросить одного из разработчиков Java наверняка, но, сделав его приватным пакетом, API можно рассматривать как "внутренний", то есть он может меняться или исчезать в любое время. Это означает, что API можно разрабатывать относительно быстро и не нужно проходить такой же относительно тщательный процесс тестирования, с которым должны пройти общественные API (поскольку после их выпуска они застряли там навсегда.)

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

Я бы рискнул предположить, что он начал жизнь как "сгруппированные" группы функций, полезных для нескольких других классов в пакете IO, и просто остался там с тех пор.

Ответ 2

Это пакетно-частный, конечно, но есть общедоступные API, которые выставляют одно и то же поведение, например. ByteBuffer.wrap(array).getInt(index) и другие методы на ByteBuffer. Вам почти наверняка лучше использовать этот правильно оформленный, хорошо документированный публичный API, чем пытаться обернуть или скопировать внутренние детали реализации из Java.