Иметь возможность определять, когда во время выполнения выполняется сравнение (или любая другая операция, например, *, - , /, >, < ,...
Это должно быть достигнуто для редактирования байт-кода класса с помощью Javassist или ow2 ASM
Этот код
public class Test{
public void m(){
if(a>2){
//blablabla
}
}
}
Должен стать
public class Test{
public void m(){
if(someExternalClass.greaterThan(a,2)){
//blalbla
}
}
}
GreaterThan вернет точно такой же результат, как '>', но также будет использоваться для сохранения количества сравнений. Затем внешний класс будет уведомляться каждый раз, когда производится сравнение.
Это должно быть сделано везде, где есть операция. Так что не только в операторах if.
Это означает, что
int a = c+d;
также должен стать
int a = someExternalClass.add(c,d);
Есть ли у вас какие-либо предложения о том, как я могу добиться этого с помощью Javassist или других библиотек.
Я предполагаю, что это как-то связано с опкодами, такими как IFLT, IFGT