Проблема автоматического подключения при создании объектов с помощью методов - PullRequest
0 голосов
/ 17 марта 2011

Я использую 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 Ответ

1 голос
/ 17 марта 2011

Если я правильно понимаю, ваша проблема заключается в том, чтобы AbstractSyntaxTree вводили в ваш класс, но вы должны использовать ParserGeneratingAST для создания экземпляра AbstractSyntaxTree. Хотя я не эксперт по PicoContainer, я думаю, что в этом случае вы можете использовать Factory, которая создает AbstractSyntaxTree объекты (используя ParserGeneratingAST), а затем вы можете использовать Factory Injection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...