byte-array
(byte-array size-or-seq) (byte-array size init)
Java の byte[] にあたるバイト配列を返します。size 個の 0、または seq の要素からなり、要素は
Number.byteValue と同じく格納します(整数は下位 8 ビットなので、300 は 44)。size と
init を渡すと、どの要素もバイト init、または seq init の次の要素になります(seq が尽きた
先は 0)。要素は符号付きのバイト(-128 から 127)として読み出します。配列は書き換えられます
(aset、aset-byte)。コレクションではありませんが(coll? と vector?
は false、= は同一性)、要素の seq になるので、count、seq、vec、nth、get と seq の
関数が受け付けます。オラクルの #object["[B" ...] から識別ハッシュを除いた形で印字します。
インタプリタと JVM では、Java のメンバとの間で双方向に byte[] として扱われます(interop)。
値としては 1 引数か 2 引数の関数です。
.getBytes と (String. bytes ...) は、文字セットを名前("UTF-8"、"ISO-8859-1"、
"US-ASCII" とその別名)か java.nio.charset.Charset で受け取ります。Charset は
StandardCharsets の 6 つのフィールドか、文字列リテラルの Charset/forName です。この値は
どのバックエンドでも文字セットそのものです。.name・.displayName・str・.toString は
その名前を返し、=・.equals・.hashCode・.compareTo は名前で比べ、Charset と
Comparable の instance? になります。復号する InputStreamReader、符号化する
OutputStreamWriter、ByteArrayOutputStream.toString も受け取ります。slurp と
clojure.java.io の :encoding は名前だけを受け取り、Charset を渡すとオラクルの
ClassCastException になります。Java のメンバへはホストの Charset として渡ります
(インタプリタと JVM、interop)。JDK が拒否する名前の Charset/forName は
オラクルの UnsupportedCharsetException、形が不正な名前は IllegalCharsetNameException です。