I am still startled by Java. While playing with Byte Buddy I noodled with adding annotations to a class at runtime. I wrote this:
final Class<? extends X> dynamicType
= (Class<< extends X>) new ByteBuddy().
subclass(Object.class).
implement(X.class).
annotateType(() -> Inject.class).
method(named("toString")).intercept(value("Hello World!")).
method(named("foo")).intercept(value(3)).
make().
load(ByteBuddyMain.class.getClassLoader(), WRAPPER).
getLoaded(); Get a load of "annotatedType"! It wants an annotation instance. Originally I tried:
new Inject() {
@Override
public Class<Inject> annotationType() {
return Inject.class;
}
} What the hey, then I thought to try the lambda expression and live dangerously. It works!
No comments:
Post a Comment