2017-08-25 69 views
1

与Google Guice框架有问题。Google Guice配置错误(未绑定实现)

我正试图创建一个简单的应用程序,该应用程序注入一个对象列表。不幸的是,当试图运行一个应用程序时,我得到以下错误。

未绑定java.util.List的实现。 而在Operator.carShops(Operator.java:17) 定位的java.util.List 的领域,而定位符()

下面是程序代码:

public class Main { 
public static void main(String[] args) { 
     Injector injector = Guice.createInjector(); 
     Operator operator = injector.getInstance(Operator.class); 

     operator.prepareData(); 
}} 



public class Operator implements IOperator { 
@Inject 
private List<CarShop> carShops; 

public List<CarShop> getCarShops() { 
    return carShops;        <--- Place of error occurrence 
} 

public void setCarShop(List<CarShop> carShops) { 
    this.carShops = carShops; 
} 

public void prepareData() { 
    for(CarShop carShop:carShops) 
     for(int i=0;i<10;i++) { 
      Car car = new Car(); 
      car.setPrice(1000);  
      carShop.addCar(car); 
     } 
}} 

请帮助

回答

1

看来你的模块注册依赖关系丢失了。当需要接口时,你需要告诉Guice将使用什么类。

import com.google.inject.AbstractModule; 

public class SimpleModule extends AbstractModule { 

    @Override 
    protected void configure() { 
     bind(CarShop.class).to(CarShopImpl.class); 
    } 
} 

哪里CarShopImplCarShop接口特定的实现。

比方说,CarShopImpl类的开始应该是:

public class CarShopImpl implements CarShop { 

    // Implementation 
} 
+0

这意味着,如果我没有接口,我需要创建它? – Line

+1

Line:的确... –