如何将几个类注入到一个方法中(指南)



我有三个类(例如)

Buick implements Vehicle
Chevy implements Vehicle
Ferrari implements Vehicle

我有一个方法

travelTo(ZipCode start, Zipcode end) 
for(Class<Vehicle> v : vehicleInstances)
{
     Vehicle car= v.getconstructor(ZipCode.class, ZipCode.class).newInstance(start,end).newInstance(start,end);
     car.drive();
}

我想通过Guice注入这些类(而不是使用丑陋的静态类名数组或类名enum)。我该怎么做呢?

看看Guice Multibinder。它可以为你注射Set<Vehicle>

http://google-guice.googlecode.com/svn/trunk/latest-javadoc/com/google/inject/multibindings/Multibinder.html

编辑:您可能仍然需要将其作为成员变量或构造函数注入。

编辑:添加示例代码。在没有IDE的情况下执行此操作,因此可能需要一些调整。

 public class YourModule extends AbstractModule {
    protected void configure() {
      Multibinder<Vehicle> multibinder
         = Multibinder.newSetBinder(binder(), Vehicle.class);
      multibinder.addBinding().to(Buick.class);
      multibinder.addBinding().to(Chevy.class);
      multibinder.addBinding().to(Ferrari.class);
   }
 }
 public class YourInterestingClass {
   private final Set<Vehicle> vehicles;
   @Inject
   public YourInterestingClass(Set<Vehicles> vehicles){
     this.vehicles = vehicles;
   }
   public void doSomethingWithVehicles(){
     for(Vehicle vehicle: vehicles){
       // do something
     }
   }
 }

相关内容

  • 没有找到相关文章

最新更新