Allow default methods to override Object's methods

Howard Lovatt howard.lovatt at
Thu Feb 28 17:33:47 PST 2013

Playing round with the lambdas is generally going well for me, good fun.

However a couple of times I have wanted to override Object's methods, i.e.
toString, equals, and hashCode. For example in a toy stream library I am
playing with:

@FunctionalInterface public interface IntStream {
  int next() throws Break, Continue;

  default void forEach(final IntConsumer consumer) {
    try {
      for (;;) {
        try { consumer.accept(next()); }
        catch (final Continue notUsed) {}
    catch (final Break notUsed) {}

  default IntStream map(final IntUnaryOperator unary) { return () ->
unary.applyAsInt(next()); }

It would be great to override toString, equals, and hashCode just like a
List does.

I think this has been discussed before I don't remember anyone having any
examples of were it would be useful.

Do you think the above is a genuine example or an outlying case?

  -- Howard.

More information about the lambda-dev mailing list