Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Selecting arithmetic operation join points. Is it possible?

> > For example I'd like to be able to select integer subtraction:
 
> > 
 
> > Integer i = 5;
 
> > Integer j = 2;
 
> > Integer r = i - j;
 
> > 
 
> > Maybe if Java supported operator overloading that would be fairly easy.
 
> > 
 
> > 1. So is something like this possible now? I'm pretty sure it is not.
 
> 
 
> You are right, it is not possible.
 
> 
 
> > 2. Would this be possible to implement? How? Effort?
 
> > 3. Is something like this planned for future AspectJ versions?
 
> 
 
> I cannot speak for the developers, but I do not think you will ever see this feature in AspectJ.
 
> 
 
> > 
 
> 
 
> Regards
 

I'm not sure I see why not. Please consider the following example:

public aspect StringConcat {
    public pointcut concat() : call(* java.lang.StringBuffer.append(..));
    
    before() : concat() {
        System.out.println("About to concatenate!");
    }
}

public class Tester {

    public static void main(String[] args) {
        String a = "a";
        String b = "b";
        System.out.println(a + b);
    }
}

When main() is executed the result is:
=======================
About to concatenate!
ab
=======================

So we actually have a real example where the + operator is overloaded and the resulting code is directly in the client byte code.
Now I'm not too familiar with the Java byte code spec but I don't see why the same cannot be done for e.g. Integer or event the primitive types?

Thank you.

MP


Back to the top