我的问题归结为使用带有两个字符串参数的@Assisted到工厂.问题是因为Guice将类型视为参数的识别机制,两个参数都是相同的,我得到一个配置错误.
一些代码:
public class FilePathSolicitingDialog {
//... some fields
public static interface Factory {
public FilePathSolicitingDialog make(Path existingPath,
String allowedFileExtension,
String dialogTitle);
}
@Inject
public FilePathSolicitingDialog(EventBus eventBus,
SelectPathAndSetTextListener.Factory listenerFactory,
FilePathDialogView view,
@Assisted Path existingPath,
@Assisted String allowedFileExtension,
@Assisted String dialogTitle) {
//... typical ctor, this.thing = thing
}
// ... methods
}
Run Code Online (Sandbox Code Playgroud)
问题在于双字符串参数.
我尝试用单独的@Named("酌情")注释标记每个字符串,但这只会导致更多的配置错误.从这些错误的声音,他们不希望在工厂类上绑定注释,所以我没有尝试自定义绑定注释.
简单而嘈杂的解决方案是创建一个简单的参数类来包含这三个辅助值,并简单地注入:
public static class Config{
private final Path existingPath;
private final String allowedFileExtension;
private final String dialogTitle;
public Config(Path existingPath, String allowedFileExtension, String dialogTitle){
this.existingPath = …Run Code Online (Sandbox Code Playgroud)