Data classes

Stephen Colebourne scolebourne at joda.org
Wed Nov 8 17:45:17 UTC 2017


Having data classes be able to extend other data classes is surprising
to me, even when limited to just an abstract supertype. It also seems
unnecessary now Java has methods on interfaces. I'd rather see "data
interfaces" than "abstract data classes". Can you elaborate on why
"abstract data classes" is better than "data interfaces"?

Stephen


On 2 November 2017 at 14:50, Brian Goetz <brian.goetz at oracle.com> wrote:
> That's a separate feature, which we're also thinking about.  Data classes
> give us one half of algebraic data types; sealed classes give us the other
> half.  But, since data classes stand just fine on their own without sealed
> classes, and are the more immediately useful of the two, we're working on
> this first.
>
> On 11/2/2017 10:44 AM, Zheka Kozlov wrote:
>>
>> Also, it would be interesting to know how to model closed data class
>> hierarchies (like sealed in Scala). I suppose it should be something like
>> that:
>>
>> __data class ASTNode {
>>     ASTNode() {} // make constructor package-private so no one outside can
>> inherit
>> }
>>
>> __data class ASTNumber(double num) extends AST { }
>> __data class ASTBinaryOperator(char op) extends AST { }
>> ...
>>
>>
>> 2017-11-02 21:29 GMT+07:00 Zheka Kozlov <orionllmain at gmail.com
>> <mailto:orionllmain at gmail.com>>:
>>
>>     Hi Brian.
>>
>>     I'm happy to see this proposal. This is very similar to how I
>>     imagined data classes in Java. Just one thing that looks a bit
>>     ugly to me is the empty curly braces after the data class
>>     declaration. Can we omit them? Most of data classes will have no
>>     members, so the redundant curly braces will clutter the code.
>>
>>
>>     2017-11-02 1:53 GMT+07:00 Brian Goetz <brian.goetz at oracle.com
>>     <mailto:brian.goetz at oracle.com>>:
>>
>>         At the following URL, please find a writeup containing our
>>         current thoughts on Data Classes for Java:
>>
>>         http://cr.openjdk.java.net/~briangoetz/amber/datum.html
>>         <http://cr.openjdk.java.net/%7Ebriangoetz/amber/datum.html>
>>
>>         Comments welcome!
>>
>>         We'll be making a prototype available soon for folks to play with.
>>
>>
>>
>


More information about the amber-spec-observers mailing list