这是我第一次使用ByteBuddy,我想动态创建一个java.lang.Object
的子类,只有一个名为myValue的公共字段,其类型为java.lang.String
,默认值为“Hello World!”。 不幸的是,在调用myClass.newInstance()之后,该字段的值为null
(在Eclipse调试器中)。如何将默认值分配给新定义的字段?
final Class<?> myClass = new ByteBuddy().subclass(Object.class).name("test.MyClass")
.defineField("myValue", String.class, Visibility.PUBLIC)
.value("Hello World !")
.make()
.load(getClass().getClassLoader(), ClassLoadingStrategy.Default.INJECTION).getLoaded();
Object myObject = myClass.newInstance();
我在这里错过了什么吗?
我使用Eclipse Mars.2,一个Oracle JDK 1.7.0_75和ByteBuddy-1.2.3
我很困惑,为什么你想这样做? –
原因并非真正相关,因为我只是在探索图书馆(正如“Hello World!”值所示)。我想仿效的课程如下所示: 'package test; public class MyClass {0} {0} {0} public int myValue =“Hello World!”; }' –