@Target(value=PARAMETER)
@Retention(value=RUNTIME)
@Documented
public @interface Assist
public class PartyCreator {
@Inject private SomeDependency dependency;
public Party createParty(Member[] members) {
return new Party(dependency, members);
}
}
because we can't inject members here.
So we can use Assisted Inject!
public class Party {
private Member[] members;
@Assisted
public Party(
@Assist Member[] members,
SomeDependency dependency
) {
// your code...
}
// your code...
}
And its factory (it must be an interface, you don't need to
create the implementation, it's actually created using proxies)
public interface PartyFactory {
Party create(Member[] members);
}
The we bind it
bind(Party.class).toFactory(PartyFactory.class);And then we use it
PartyFactory factory = injector.getInstance(PartyFactory.class); Party party = factory.create(members);