как я могу создать подкласс ByteBuffer?

Таким образом, архитекторы Java NIO создали не интерфейс ByteBuffer , а скорее ByteBuffer класс , который не является конечным классом, но у него нет общедоступных конструкторов пакетов. , и поэтому он не может быть разделен на подклассы вне своего пакета. Фуей. : P

У меня есть программа, которая использует файловые байтовые буферы с отображением памяти (полученные с помощью FileChannel.map ()) в кучу мест, и я пытаюсь отследить неприятную ошибку, в которой остается файл, о котором идет речь. открыть, потому что есть по крайней мере один ByteBuffer , который не передается в сборку мусора.

Я бы хотел создать класс InstrumentedByteBuffer , который выглядит как байтовый буфер, но украшает обычный ByteBuffer (или его подклассы, например MappedByteBuffer ) и отслеживает его существование (включая новые буферы, созданные с помощью duplicate () и slice () ) - таким образом я могу сохранить свой код без изменений, использующий ByteBuffer , Мне просто нужно украсить исходный байтовый буфер.

Есть ли способ сделать это (через отражение, прокси или что-то еще), чтобы обойти частные конструкторы? Мне не нужно отправлять это в окончательный продукт, мне просто нужно временно использовать его, чтобы исправить эту ошибку.

10
задан Jason S 11 October 2011 в 11:55
поделиться