|
|
|
|
|
by kmontrose
5105 days ago
|
|
> This means classes with a better implementation can just override Count() and suffer none of the problems of the extension method approach. Instance methods are bound before extension methods, if someone provides an implementation of Count() in a subclass it'll be invoked instead (provided your reference is typed appropriately). More narrow extension methods are bound before general ones, so you can even "override" within extension methods. Scala has some neat stuff, but it's not Java 8 so I don't see how it's relevant. > Btw, C# has some limited form of implicits, too, but I haven't seen any serious usage of them for a while. C# has implicit conversion operators you can define, http://msdn.microsoft.com/en-us/library/z5z9kes2(v=vs.100).a... . You'd better have a really good reason for defining one though, silent conversions are generally frowned upon. |
|
> Scala has some neat stuff, but it's not Java 8 so I don't see how it's relevant.
Java's default methods are basically Scala's traits (just made a bit more cumbersome to make Java developers feel right at home), so what I said about traits applies to “interfaces with default methods”, too.