I'm thinking of using Guice for DI in my app where I should be able to swap the implementations at runtime. An example is provided below to illustrate the requirement:

```java
class ValidationEngine {
   public void validate(ValidationService vs) {}
}

class Client1_ValidationService implements ValidationService {}
class Client2_ValidationService implements ValidationService {}

```

One of the above implementation should be bound to validate function at runtime based on client name, say Client1 or Client2

I thought of changing the ValidationEngine like this:

```java
class ValidationEngine {   
    @Inject 
    @Named("vServicee") ValidationService vs;

    public void validate() {
         vs.validate()
    }
}

```

The problem with the above approach is that the parameter to the @Named annotation is static; in fact annotations don't accept runtime values. Are there any other approaches in Guice to solve this kind of problems?