Использование sun.misc.SharedSecrets

Недавно я нашел этот маленький драгоценный камень в нашей базе данных на работе. Должен признаться, что я совершенно не представляю, почему это перечисление было написано именно так (имена изменены для защиты невинных):

package foo.bar;

import sun.misc.SharedSecrets;
import foo.baz.HasAGetValuesMethod;

public enum MysteryEnum implements HasAGetValuesMethod {

   THINGY, BOB;

   @Override
   public MysteryEnum[] getValues() {
      return SharedSecrets.getJavaLangAccess().getEnumConstantsShared(MysteryEnum .class);
   }
}

В методе getValues() вместо простого вызова MysteryEnum. values() он использует что-то под названием sun.misc.SharedSecret для получения хэндла к чему-то под названием sun.misc.JavaLangAccess, а затем использует that для получения массива всех значений перечисления. В Javadoc этого класса говорится о том, что делает метод, но я не могу найти много информации о том, зачем его вызывать.

Разработчика, который это написал, больше нет, поэтому я не могу его спросить. Я все равно спрошу свою команду, но у меня такое чувство, что ответ будет таким: "Не знаю, почему он так делает, но лучше его не менять". На данный момент я предполагаю, что это либо странный случай, когда кто-то не знает о существовании метода values(), либо мое незнание библиотек sun.misc заставляет меня упустить что-то очевидное для других. Есть идеи, почему этот код был написан таким образом?

9
задан Jon 31 January 2012 в 11:17
поделиться