Я хотел бы привязать экземпляр объекта к классу, созданному с помощью Javassist. Этот объект считывается из какого-то источника, данные заранее неизвестны.
// Create the class.
CtClass subClass = pool.makeClass( fullName );
final CtClass superClass = pool.get( Foo.class.getName() );
subClass.setSuperclass( superClass );
// Add a static field containing the definition. // Probably unachievable.
final CtClass defClass = pool.get( SomeMetaData.class.getName() );
CtField defField = new CtField( defClass, "DEF", subClass );
defField.setModifiers( Modifier.STATIC );
subClass.addField( CtField.Initializer.??? );
return subClass.toClass();
Но когда я проверил API, кажется, что Javassist создает настоящий байт-код, который сохраняет инициализацию в терминах «вызвать это», «создать экземпляр того» или «использовать эту константу».
Есть ли способ попросить Javassist добавить статическое поле, инициализированное существующим экземпляром, заданным во время выполнения?