Я пишу инструменты профилирования пути, и я использую jdt Astparser для изменения исходного кода Если я хочу добавить некоторые коды после каждой исходной строки и позволить им быть атомарными и не изменять поведение исходного кода. не только как этот: исходного код:Обработка исходного кода (добавление синхронизированного блока) изменяет область видимости переменной
int a = 0;
int b = 0;
a = b;
после манипуляции
synchronized (lock) {
int a = 0; //original code
//my code
//....
//end
}
synchronized (lock) {
int b = 0; //original code
//my code
//....
//end
}
synchronized (lock) {
a = b; //original code
//my code
//....
//end
}
но он изменяет переменные сферы, переменные а и б больше не глобальные и код не может скомпилировать.
Есть ли способ объединить объявление переменной и коды, которые я вставил после этого, чтобы они стали атомарными и не изменяли область переменных?
... и извините за мой английский :)
Если вы не хотите, чтобы они находились в области действия блока, не объявляйте их в блоке. –
Я хочу, чтобы объявление переменной и код i вставили после атомной операции, поэтому он должен находиться в блоке – kaze13
@Brian Roach, см. Выше. – kaze13