public class Foo {
@Inject
private Bar bar;
public void doSomething() {
bar.doSomething();
}
}
public class Bar {
public void doSomething() {
System.out.println("Doing something...");
}
}
public class InjectAnnotationProcessor {
public static void process(Object instance) {
Field[] fields = instance.getClass().getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(Inject.class)) {
field.setAccessible(true);
try {
Class<?> fieldType = field.getType();
Object fieldInstance = fieldType.newInstance();
field.set(instance, fieldInstance);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
com.example.package=InjectAnnotationProcessor
Foo foo = new Foo();
InjectAnnotationProcessor.process(foo);
foo.doSomething();