通过方法面向对象创建时出现自动接线问题

时间:2011-03-17 08:46:43

标签: java dependency-injection ioc-container picocontainer

我正在使用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解决这个问题?如果可能的话,我想保留没有注释的课程。

由于

1 个答案:

答案 0 :(得分:1)

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