Skip to Content
Javaへの関数的アプローチ
book

Javaへの関数的アプローチ

by Ben Weidig
March 2025
Intermediate to advanced
414 pages
5h 47m
Japanese
O'Reilly Media, Inc.
Book available
Content preview from Javaへの関数的アプローチ

第5章 記録 レコードを扱う

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

Java 14では、プレビュー機能として新しいタイプのデータ構造が導入された。1レコードは、単なる典型的なJavaの型やテクニックではない:レコードは、単にJavaの典型的な型やテクニックとして使えるものではなく、シンプルでありながら豊富な機能を持つデータ・アグリゲータを最小限のボイラープレートで提供する、まったく新しい言語機能である。

データ集計の種類

一般的な観点からすると、データ集約とは、複数のソースからデータを収集し、意図された目的やより好ましい使い方に役立つ形式に組み立てるプロセスである。 おそらく、データ集約の種類として最もよく知られているのは、タプルであろう。

タプル

数学的に言えば、タプルは「要素の有限順序シーケンス」であり、プログラミング言語で言えば、タプルは複数の値やオブジェクトを集約したデータ構造である。

タプルには2つの種類がある。構造タプルは、コンテナの要素の順番にのみ依存するため、以下のPythonで見られるように、インデックス付けによってのみアクセスできる。2コードで見ることができる:

apple = ("apple", "green")
banana = ("banana", "yellow")
cherry = ("cherry", "red")

fruits = [apple, banana, cherry]

for fruit in fruits:
  print "The", fruit[0], "is", fruit[1]

名前付きタプルはデータにアクセスするためにインデックスを使わず、次のSwiftコードに見られるように、代わりにコンポーネント名を使う:

typealias Fruit = (name: String, color: String)

let fruits: [Fruit] = [
  (name: "apple", color: "green"),
  (name: "banana", color: "yellow"),
  (name: "cherry", color: "red")]

for fruit in fruits {
  println("The \(fruit.name) is \(fruit.color)")
}

Recordが何を提供するのかを示すために、まず古典的なPOJOから不変性のあるPOJOに移行する方法を見てもらい、次に同じ機能をRecordで再現する方法を紹介する。

シンプルなPOJO

まず、Recordが何を提供するのかを理解するために、Javaにおけるデータ集約の「Record以前」の状態を見てみよう。 例として、単純な「ユーザ」型を「古典的な」POJOとして作成し、それを「不変性」POJOに進化させ、最後にRecordを作成する。例5-1に見られるように、ユーザ名、アクティビティ状態、最終ログイン・タイムスタンプ、そして典型的なJavaコードに付随する通常の定型文を持つ単純な型となる。

例 5-1. 単純なUser POJO
public final class User {

  private String username;
  private boolean active;
  private LocalDateTime lastLogin;

  public User() { } 

  public ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

ディフェンシブ・セキュリティ・ハンドブック第2版

ディフェンシブ・セキュリティ・ハンドブック第2版

Lee Brotherston, Amanda Berlin, William F. Reyor
エンジニアが学ぶ会計システムの「知識」と「技術」

エンジニアが学ぶ会計システムの「知識」と「技術」

広川 敬祐, 五島 伸二, 小田 恭彦, 大塚 晃, 川勝 健司

Publisher Resources

ISBN: 9798341625730Supplemental Content