Java 8 のコンテキストにおける「sugar」、「desugar」という用語とは何ですか? 質問する

Java 8 のコンテキストにおける「sugar」、「desugar」という用語とは何ですか? 質問する

Java 8 では「シュガーリング」と「デシュガーリング」という言葉をよく耳にしますが、これらの用語はどういう意味ですか? 概念的なものですか、それとも構文的なものですか?

いくつかの例:

デフォルトの反復ループはJavaに戻ります

コンパイル時の糖衣構文に関する考察。

ベストアンサー1

砂糖プログラミングにおいて、通常は甘い追加機能(ほとんどはショートカット)により、一部の構造の入力と読み取りが容易になります(実際には、プログラムのライフサイクルで最も重要なのは読み取りです)。

Wikipediaには次のような定義がある。構文糖ただし、すべてのシュガーが本質的に構文的なわけではないことに注意してください (最近のすべてのスイートの追加がコンパイラの変更だけというわけではありません)。

以下にいくつか例を挙げます。

  • 接尾辞と接頭辞の増分演算子 (i++++i)。これらの演算子の唯一の目的は、追加のステートメントを記述しないようにすることです。これらは純粋な砂糖です。
  • +=、、などは|=&=同じ種類の砂糖から作られています。
  • プリミティブ型とオブジェクト間の暗黙的な変換も砂糖です。
  • 型推論も砂糖の一種です。
  • Java 8で導入されたラムダ式は、別の種類の砂糖です(これは文法的なことだけではなく

Java は、特に現代の言語と比較すると、簡潔さが足りないと広く考えられています。そのため、コードの読み取りを高速化する追加機能は歓迎されます。

最後に、糖分が不足するとプログラムが肥大化する可能性がある一方で、糖分が多すぎると、同じことをさまざまな方法で記述することになり、言語が不快になり、プログラムの一貫性が失われ、保守が困難になる可能性があることを指摘しておきます。別の種類の糖分である API 糖分は、ほとんどの場合、API が追加 (たとえばオーバーロード) で構成されている場合に特に、API を理解しにくくする厄介者です。

そうは言っても、脱糖のいずれかを指す

  • 言語から余分なものをすべて取り除くプロセス
  • コードプロセッサが、シュガーされたステートメントの背後にあるものを見つけるプロセス(これには、たとえば、型推論が含まれる場合があります)

おすすめ記事