SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

マンガで分かるプログラミング用語辞典

「ラッパークラスとラッパーオブジェクト」
~マンガでプログラミング用語解説

マンガで分かるプログラミング用語辞典(236)

  • X ポスト
  • このエントリーをはてなブックマークに追加

解説

 「ラッパークラス」(wrapper class)や、「ラッパーオブジェクト」(wrapper object)は、オブジェクトではないけれど、オブジェクトとしてあつかいたい値を、包む(wrapする)クラスやオブジェクトのことです。

 たとえば文字列がオブジェクトではない値(プリミティブ値)のプログラミング言語があったとします。そうしたプログラミング言語で、「hogeString.split(',')」のように、文字列に対してメソッドを使いたいとします。

 そうした場合、文字列を包んでオブジェクトとしてあつかうためのStringクラスを用意して、「new String(hogeString).split(',')」のように、文字列をオブジェクトに変換してメソッドを使うという方法がとれます。

 こうしたとき、Stringはラッパークラスと呼ばれます。

 プログラミング言語によっては、プリミティブ値のあとにプロパティやメソッドを書くと、自動的にラッパーオブジェクトにして、プロパティやメソッドを使えるようにするケースもあります。

 そうしたプログラミング言語では、ラッパークラスやラッパーオブジェクトを意識することはないですが、知識として知っておくとよいです。

サンプル

 「ラッパークラスやラッパーオブジェクト」のサンプルです。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>「ラッパークラスやラッパーオブジェクト」のサンプル</title>
    <style> #output { font-size: 32px; line-height: 1.5; white-space: pre-wrap; } </style>
  </head>
  <body>
    <pre id="output"></pre>
    <script>
window.addEventListener('DOMContentLoaded', e => {
    // 出力用の関数
    const print = function() {
        const el = document.querySelector('#output');
        el.textContent += [...arguments].map(x => `${x}`).join(', ') + '\n';
    };

    // プリミティブ値の文字列と、Stringオブジェクト
    let text1 = 'hoge hoge';
    let text2 = new String(text1);
    print('text1の型', typeof text1);
    print('text2の型', typeof text2);

    // Stringオブジェクトのプロパティやメソッドの一覧
    let props = Object.entries(Object.getOwnPropertyDescriptors(Object.getPrototypeOf(text2))).map(x => x[0]).join(', ');
    print('Stringオブジェクトのプロパティやメソッドの一覧', props);
});
    </script>
  </body>
</html>
出力結果
text1の型, string
text2の型, object
Stringオブジェクトのプロパティやメソッドの一覧, length, constructor, anchor, at, big, blink, bold, charAt, charCodeAt, codePointAt, concat, endsWith, fontcolor, fontsize, fixed, includes, indexOf, isWellFormed, italics, lastIndexOf, link, localeCompare, match, matchAll, normalize, padEnd, padStart, repeat, replace, replaceAll, search, slice, small, split, strike, sub, substr, substring, sup, startsWith, toString, toWellFormed, trim, trimStart, trimLeft, trimEnd, trimRight, toLocaleLowerCase, toLocaleUpperCase, toLowerCase, toUpperCase, valueOf

フィードバックお待ちしております!

 ご感想、解説してほしい用語、解説内容のアドバイスなどございましたら、FacebookX(旧Twitter)などでお気軽に編集部までお寄せください。よろしくお願いいたします。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
マンガで分かるプログラミング用語辞典連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19247 2024/05/14 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング