1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
From the [javadoc of FactoryModuleBuilder][fmb]:
> The types of the factory method's parameters must be distinct. To use multiple
> parameters of the same type, use a named `@Assisted` annotation to
> disambiguate the parameters. The names must be applied to the factory method's
> parameters:
```java
public interface PaymentFactory {
Payment create(
@Assisted("startDate") Date startDate,
@Assisted("dueDate") Date dueDate,
Money amount);
}
```
> ...and to the concrete type's constructor parameters:
```java
public class RealPayment implements Payment {
@Inject
public RealPayment(
CreditService creditService,
AuthService authService,
@Assisted("startDate") Date startDate,
@Assisted("dueDate") Date dueDate,
@Assisted Money amount) {
...
}
}
```
[fmb]: https://google.github.io/guice/api-docs/latest/javadoc/com/google/inject/assistedinject/FactoryModuleBuilder.html
|