{"version":1,"type":"rich","provider_name":"Libsyn","provider_url":"https:\/\/www.libsyn.com","height":90,"width":600,"title":"\u201cCarrier Classes\u201d [IJN]","description":"This episode presents Project Amber lead Brian Goetz\u2019s recent email \u201cData Oriented Programming, Beyond Records\u201d, wherein he describes plans to improve Java\u2019s data handling capabilities by introducing carrier classes, a generalization of records. Like them, carrier classes describe their state through a component list that defines the type\u2019s external API: accessors, a constructor, and matching deconstructor - this allows carrier classes to participate in pattern matching and reconstruction. Unlike records, the implementation of this API remains the developer\u2019s task although component fields offer a shortcut for the common case where the API does map to a field. Carrier classes don\u2019t have to be final (and can hence participate in inheritance) and neither do their fields (so they can be mutable data carriers).  The email also mentions carrier interfaces, allowing records to be abstract as well as a relaxation of deconstruction patterns that make them more amenable to evolution of the matched type. This episode also briefly touches on Gavin Bierman\u2019s mail to the Project Amber mailing list that announces pattern assignments and constant patterns. ","author_name":"Inside Java","author_url":"https:\/\/inside.java\/podcast","html":"<iframe title=\"Libsyn Player\" style=\"border: none\" src=\"\/\/html5-player.libsyn.com\/embed\/episode\/id\/40198720\/height\/90\/theme\/custom\/thumbnail\/yes\/direction\/forward\/render-playlist\/no\/custom-color\/88AA3C\/\" height=\"90\" width=\"600\" scrolling=\"no\"  allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen><\/iframe>","thumbnail_url":"https:\/\/assets.libsyn.com\/secure\/content\/198866280"}