Home > プログラミング > [Java]ClassオブジェクトをtoString()した時に表示される「[L○○;」は配列という意味

[Java]ClassオブジェクトをtoString()した時に表示される「[L○○;」は配列という意味

初めて知ったのでメモ。

例えば、以下のようなコードがあったとします。

public static void main(String[] args) {
String str = "0";
String[] array = {"1", "2"};

System.out.println(str.getClass());
System.out.println(array.getClass());
}

実行結果は次のようになります。

class java.lang.String
class [Ljava.lang.String;

Stringクラスのインスタンスである「str」のClassオブジェクトを文字列化すると、「java.lang.String」と表示されます。

一方、Stringクラスの配列である「array」のClassオブジェクトを文字列化すると、「[Ljava.lang.String;」と表示されます。

どうやら、あるクラスの配列のClassオブジェクトを文字列化すると「[L<クラス名>;」と表示されるようです。(クラス名の最初に「[L」、最後に「;」が付く)

例外のメッセージにもたまに出てくるので、知ってると役に立つかもですね。

Comments:2

匿名 08-10-15 (Wed) 9:31

JNIの型のシグネチャですね。

http://java.sun.com/j2se/1.3/ja/docs/ja/guide/jni/spec/types.doc.html#16432
このページを見てみると一覧がわかります。

kadoppe 08-10-16 (Thu) 17:26

なるほど!
こんなところにJNIが関わっているのですねー!
教えていただきありがとうございます!

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.kadoppe.net/2008/10/javaclasstostringl.html/trackback
Listed below are links to weblogs that reference
[Java]ClassオブジェクトをtoString()した時に表示される「[L○○;」は配列という意味 from CreativeStyle

Home > プログラミング > [Java]ClassオブジェクトをtoString()した時に表示される「[L○○;」は配列という意味

Search
Feeds
Meta

Return to page top