Вызов встроенных Java-методов - PullRequest
1 голос
/ 27 мая 2009

Можно ли вызвать встроенный собственный код JVM, то есть код, который вызывают различные классы в java.lang и java.io? Другими словами, можете ли вы обойти встроенный API Java для доступа к различным вызовам системного уровня, таким как доступ к файловой системе? Я знаю, что мог бы сделать это, создав свою собственную библиотеку собственного кода и вызвав ее через JNI, но было бы элегантно не нуждаться в дополнительной собственной библиотеке для функций, уже встроенных в JVM.

Ответы [ 3 ]

6 голосов
/ 27 мая 2009

Нет, ты не можешь. Это разработано таким образом специально; вы бы переопределили контракты API, если бы могли.

В любом случае, стандартный код оболочки библиотеки очень незначительный, и с JIT-компиляторами вы не должны заметить никакого влияния на скорость.

Кроме того, реализация этих методов не является частью спецификации API. То, что является «нативным» для одной реализации Java, не обязательно должно быть для другой.

0 голосов
/ 27 мая 2009

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

0 голосов
/ 27 мая 2009

Если вы хотите, чтобы Native IO использовал классы NIO.

...