【发布时间】:2017-02-10 06:32:04
【问题描述】:
class ClassA {
protected ClassA(Injector baseGraph,
BlobStoreContext context,
SwiftApi api,
@Memoized Supplier<Set<? extends Location>> locations,
@Assisted String regionId,PayloadSlicer slicer,
@Named(PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
}
}
class ClassB extends ClassA {
protected ClassB(Injector baseGraph,
BlobStoreContext context,
SwiftApi api,
@Memoized Supplier<Set<? extends Location>> locations,
@Assisted String regionId,
PayloadSlicer slicer,
@Named(PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
super(baseGraph, context, api, locations, regionId, slicer, userExecutor);
}
}
class C extends AbstractModule {
protected void configure() {
bind(classA).to(classB);
}
}
绑定时构造函数参数有问题。
出现错误
原因:com.google.inject.CreationException:Guice 创建错误:
1) 没有绑定带有 @com.google.inject.assistedinject.Assisted(value=) 注释的 java.lang.String 的实现。 定位用@com.google.inject.assistedinject.Assisted(value=) 注释的java.lang.String 对于
处的参数 4
【问题讨论】:
-
为什么在
ClassB的构造函数中调用ClassB的超类的构造函数?通常不建议这样做。