Method Pointers

David Holmes david.holmes at oracle.com
Sun Feb 26 14:10:16 PST 2012


Hi Conrad,

This query was raised last December in the "Method reference conversion" 
thread - see in particular Brian's response here:

http://mail.openjdk.java.net/pipermail/lambda-dev/2011-December/004396.html

Bottom line: it is highly unlikely that this#methodName == this#methodName

David Holmes
-------------

On 27/02/2012 7:49 AM, Conrad Winchester wrote:
> Hi all,
>
> I'm getting a little confused about closures and lambdas - I originally posted this question to closures-dev, but somebody told me that that was the wrong list and the lambda-dev is the right list. To me this question crosses both concepts - anyway
>
> my name is Conrad Winchester and I am a long time developer. I am currently experimenting with the new lambdas and function pointers in the Java 8 developer preview. I have come across something that strikes me as a little inconsistent in the current way that they are handled and just wanted to see what other people think. I will try to be succinct:
>
> I wish to add and remove function pointers to collections. I refer to the functions using a this reference. Essentially the issue is this. If I use
>
> collection.add(this#methodName)
>
> then I can not use
>
> collection.remove(this#methodName)
>
> because the reference 'this#methodName' is different to the first one. I think this is due to the way that SAM interfaces are used to wrap the closures.
>
> A side effect of this is that this will return false
>
> public boolean checkConsistency()
> {
> 	SomeSAMInterface m1 = this#methodName;
> 	SomeSAMInterface m2 = this#methodName;
> 	return m1==m2;
> }
>
> I personally think that every time I use 'this#methodName' it should return the same reference. Is this correct?
>
> Are there any plans to make method pointers always point to the same thing. If not it makes it much more awkward to use them
>
>
> Thanks
>
> Conrad Winchester
>


More information about the lambda-dev mailing list