相关疑难解决方法(0)

使用@Assisted注入​​多个相同类型的参数(@Named params)

我的问题归结为使用带有两个字符串参数的@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)

java dependency-injection guice assisted-inject

17
推荐指数
1
解决办法
4670
查看次数