Stateless traits & default interface methods question

Paul Sandoz paul.sandoz at oracle.com
Mon Nov 18 01:23:51 PST 2013


Hi Matthew,

You can think of a default method as "just another virtual method" i.e. there is no fundamental difference, from the perspective of the VM, between a default method on an interface and a non-abstract (or concrete) method on a class. The VM wires up method invocation at runtime and there are a few tweaks to the virtual machine specification.

http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-final.html

Paul.

On Nov 13, 2013, at 5:49 PM, Matthew Adams <matthew at matthewadams.me> wrote:

> _Note: This may be a FAQ.  RTFMs are fine._
> 
> I have a question about default interface methods, thinking in terms of
> stateless traits.
> 
> Assume at time t0 I define an interface I with a given default method
> implementation and class C implements I.  Later, at time t1, I modify the
> implementations of I's default methods _without_ recompiling C.  The next
> time that I execute a method on C that came from a default method on I, do
> I get I's implementation as it was at t0 or t1?
> 
> In other words, are default method implementations woven into classes at
> compile time, do classes delegate to the interface's default method
> implementation at runtime, or is it via some other mechanism?
> 
> -matthew
> -- 
> mailto:matthew at matthewadams.me <matthew at matthewadams.me>
> skype:matthewadams12
> googletalk:matthew at matthewadams.me
> http://matthewadams.me
> http://www.linkedin.com/in/matthewadams
> 



More information about the lambda-dev mailing list