【问题标题】:Problem auto wiring when facing object creation through methods通过方法面临对象创建时出现自动布线问题
【发布时间】:2011-03-17 08:46:43
【问题描述】:

我正在使用PicoContainer 来连接我的应用程序的类。正如您在下面看到的,一切都很完美,但都在一个地方:

    CharArrayReader reader = new CharArrayReader(acCode.toCharArray());
    CharStream charStream = new CharStream(reader);
    Scanner scanner = new Scanner(charStream);
    TokenStream tokenStream = new TokenStream(scanner);
    ParserGeneratingAST parserGeneratingAST = new ParserGeneratingAST(tokenStream);
--> AbstractSyntaxTree ast = parserGeneratingAST.generateAST(); <-- here is the problem
    SymbolsTable symbolsTable = new SymbolsTable();
    ErrorsTable errorsTable = new ErrorsTable();

    SymbolsTableFillerVisitor symbolsTableFillerVisitor = new SymbolsTableFillerVisitor(symbolsTable, errorsTable);
    TypeCheckingVisitor typeCheckingVisitor = new TypeCheckingVisitor(symbolsTable, errorsTable);
    InstructionsList instructionsList = new InstructionsList();
    CodeGenerationVisitor codeGenerationVisitor = new CodeGenerationVisitor(instructionsList);

    symbolsTableFillerVisitor.visit(ast);
    typeCheckingVisitor.visit(ast);
    codeGenerationVisitor.visit(ast);        

问题线是

AbstractSyntaxTree ast = parserGeneratingAST.generateAST();

有没有办法使用 PicoContainer 解决这个问题?如果可能的话,我希望我的课程没有注释。

谢谢

【问题讨论】:

    标签: java dependency-injection ioc-container picocontainer


    【解决方案1】:

    如果我理解正确,您的问题是在您的类中注入AbstractSyntaxTree,但您必须使用ParserGeneratingAST 来生成AbstractSyntaxTree 的实例。虽然我不是 PicoContainer 方面的专家,但我认为在这种情况下,您可以使用创建 AbstractSyntaxTree 对象的工厂(通过使用 ParserGeneratingAST),然后您可以使用 Factory Injection

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多