In computer science, an object type (a.k.a. wrapping object) is a datatype which is used in object-oriented programming to wrap a non-object type to make it look like an object.
| Property | Value |
| p:abstract
| - In computer science, an object type (a.k.a. wrapping object) is a datatype which is used in object-oriented programming to wrap a non-object type to make it look like an object.
Some object-oriented programming languages make a distinction between objects and non-objects, often referred to as primitive types, for reasons such as runtime efficiency and syntax or semantic issues. For example, Java has primitive wrapper classes corresponding to each primitive type: Integer and int, Character and char, Float and float, etc. Languages like C++ make little or no distinction between objects and non-objects; thus, the use of object type is of little interest. (en)
- ボックス化()とは、プログラミング言語において値型をオブジェクト型(参照型)に変換すること。逆に、ボックス化されたオブジェクトを値型に戻すことをボックス化解除()と呼ぶ。
Javaや.NET Frameworkなどの近代的な環境においては、値型(Javaでは原始型がこれに相当する)と参照型という根本的に異なる二種類の型が存在する。参照型のインスタンスはヒープ上の独立した領域に確保される。値型は文脈によって確保される場所は異なるものの、いずれにせよメモリ上に連続的に確保される(例えば、ローカル変数として宣言された場合はスタック上に確保され、参照型のメンバとして宣言された場合は参照型の一部として確保される)。
このように値型と参照型とは根本的に性質の異なるものであるが、さまざまな理由により、値型を参照型に型変換する必要がある場合がある。例えば.NETにおいては、概念上、値型も含めすべての型はSystem.Object型(これは参照型である)の派生型であるため、この型への暗黙的なアップキャストが行える必要がある。またJavaにおいてはコレクションに値型を直接入れることができないため、一度参照型に変換してから入れる必要がある。
次はJavaによる例である。int型の値をInteger型のオブジェクトにボックス化し、さらにそれをint型にボックス化解除している。
int hoge = 2004;
Integer piyo = new Integer(hoge); //ボックス化
int foo = piyo.intValue; //ボックス化解除
これらの操作を暗黙的に行うことを、自動ボックス化()および自動ボックス化解除()と呼ぶ。
int hoge = 2004;
Integer piyo = hoge; //ボックス化
int foo = piyo; //ボックス化解除
一見単純な型変換のように見えるが、ボックス化においてはヒープ上に新しく領域を確保し、そこに値型のデータをコピーするという操作が行われているため注意が必要である。一方、ボックス化解除ではデータのコピーが行われるだけであり、ヒープに領域を確保する必要がないのでパフォーマンスコストは比較的小さい。
自動ボックス化はC#でも取り入れられている。Javaでは JDK 1.5 から導入されている。 (ja)
- :Voor de sport, zie Boksen.
In de informatica is boxing een mechanisme om primitieve types te verpakken in objecten. Deze techniek kan alleen aanwezig zijn in programmeertalen waar er onderscheid is tussen primitieve types en objecten.
De verschillende datastructuren en taalelementen, zoals lijsten en arrays, bieden verschillende functionaliteit: een lijst kan bijvoorbeeld van grootte veranderen terwijl een array een vaste grootte heeft. Een array kan doorgaans gebruikt worden om primitieve types en objecten in op te slaan terwijl een lijst alleen objecten toestaat, zoals een LinkedList in Java. Soms is het wenselijk om primitieve types, zoals int, ook op te slaan in een LinkedList; dit is normaal gesproken niet mogelijk aangezien men alleen objecten in een de lijst kan stoppen. Met behulp van boxing kunnen de primitieve types in een object gestopt worden om dit mogelijk te maken: de ints kunnen geboxed worden naar Integer-objecten om ze vervolgens in een LinkedList te stoppen (met behulp van genericiteit kan dit type sinds Java 5.0 als LinkedList genoteerd worden). (nl)
|
| p:hasPhotoCollection
| |
| p:javadocSeProperty
| - LinkedList (en)
- java/util (en)
|
| p:wikiPageUsesTemplate
| |
| p:wikipage-ja
| |
| p:wikipage-nl
| |
| rdf:type
| |
| rdfs:comment
| - In computer science, an object type (a.k.a. wrapping object) is a datatype which is used in object-oriented programming to wrap a non-object type to make it look like an object. (en)
- ボックス化()とは、プログラミング言語において値型をオブジェクト型(参照型)に変換すること。逆に、ボックス化されたオブジェクトを値型に戻すことをボックス化解除()と呼ぶ。 (ja)
- :Voor de sport, zie Boksen. In de informatica is boxing een mechanisme om primitieve types te verpakken in objecten. Deze techniek kan alleen aanwezig zijn in programmeertalen waar er onderscheid is tussen primitieve types en objecten. (nl)
|
| rdfs:label
| - Object type (en)
- ボックス化 (ja)
- Boxing (nl)
|
| skos:subject
| |
| foaf:page
| |
| p:redirect
| |
| owl:sameAs
| |