kagamihogeの日記

kagamihogeの日記です。

JEP 186: Collection Literalsをテキトーに訳した

http://openjdk.java.net/jeps/186 をテキトーに訳した。

JEP 186: Collection Literals

Owner    Brian Goetz
Created 2013/06/20 20:00
Updated 2016/01/09 01:18
Type    Feature
Status  Draft
Component   specification/language
Scope   JDK
Discussion  lambda dash dev at openjdk dot java dot net
Effort  S
Duration    S
Priority    4
Issue   8046176
Relates to  JEP 269: Convenience Factory Methods for Collections

Summary

コレクションリテラル(collection literal)とは、配列・ListMapなどの、集約型に評価する構文の表現形式です。コレクションリテラルをサポートする言語は多数存在します。JavaでのListリテラルは以下のようになると思われます。

List<Integer> list = #[ 1, 2, 3 ];

コレクションリテラルはProject Coinとして提案され、Java 8で追加されたライブラリの穴を埋めるものとしてはごく自然なものです。コレクションリテラルはポイラープレートを減少させ、パフォーマンスの向上および安全性を向上させます。

Goals

本JEPは調査用JEP(research JEP)です。本JEPの唯一の目的は機能追加用JEPを提案するために十分なデザインスペース*1を調査することです(もしくはこれ以上の調査は推奨しないとの報告をする)。

Non-Goals

この調査用JEPでは実用可能な実装ないし仕様の作成は目的としない。

Success Metrics

この調査用JEPが成功と判断されるのは、機能追加用JEPへの移行が望ましいと思われる設計を作成した場合か、機能追加が確実に望ましくない場合です。

Motivation

コレクションリテラルは、プログラマの生産性・コードの可読性と安全性、を向上させます。

Description

配列・リスト・セット・マップの初期化をコンパクトな式で書けることには多数の利点があります。たとえば、

  • 明瞭さ(単純でシンプルなコード)
  • Dynamic footprint(サイズが既知の場合、空間を効率的に使える実装が選択可能)
  • 安全性(生成されるオブジェクトをイミュータブルに出来る)

配列・List・Mapで動作する最低限の方法は"平凡(trival)"なので、我々はそのような単純なやり方を超えるものを検討しており、target typing*2を活用し、本機能を活用するのに拡張可能な型セットを有効化する可能性があります*3

*1:design spaceが原文。

*2:あるコンテキストにおいて推論される型のこと。参考 http://stackoverflow.com/questions/33196325/java-8-target-typing

*3:and which might enable an extensible set of types to exploit this feature.が原文。よくわからん。