Динамический перевод с OpenJDK 11 с использованием отраженияJAVA

Программисты JAVA общаются здесь
Anonymous
Динамический перевод с OpenJDK 11 с использованием отражения

Сообщение Anonymous »

Я работаю над проектом, работающим с JDK8, и мы хотим перенести его в OpenJDK11.

Код: Выделить всё

public class EnumUtil {
static Object makeEnum(...) {
...
enumClass.cast(sun.reflect.ReflectionFactory.getReflectionFactory() .newConstructorAccessor(constructor).newInstance(params));
}
}
< /code>
или < /p>
    // before, field is made accessible, the modifier too
sun.reflect.FieldAccessor fieldAccessor = sun.reflect.ReflectionFactory.getReflectionFactory().newFieldAccessor(field, false);
field.set(target, value);
Например, допустим, у нас есть enum aenum :

Код: Выделить всё

public enum AEnum {
; // no values at compile time

private String label;

private AEnum (String label) {
this.label = label;
}
< /code>
Тогда мы добавляем значения Enum, подобные этим: < /p>
EnumUtil.addEnum(MyEnum.class, "TEST", "labelTest");
Наконец, мы имеем во время выполнения, значение aenum.test (не с этим прямым вызовом, но с enum.valueof ) с меткой = labeltest.
, к сожалению, Sun.Reflect.* Classe. jdk.internal.reflect.constructoraccessor Но я получаю ошибку Java: Package jdk.internal.reflect не существует . И я не думаю, что это хорошая идея, чтобы полагаться на jdk.internal.* Classes.>

Подробнее здесь: https://stackoverflow.com/questions/707 ... reflection

Вернуться в «JAVA»