Working with Java objects
Java のクラスにアクセスできれば、次の課題はオブジェクトの作成である。これは Java の new のように働く。
js> new java.util.Date() Wed Dec 05 14:12:54 JST 2007
JavaScript 変数に格納した新しいオブジェクトを call メソッドで呼ぶことができる。
js> f = new java.io.File("test.txt") test.txt js> f.exists() false js> f.getName() test.txt
※ ここで test.txt を作成し保存
js> f.exists() true js>
クラスオブジェクト自身からも静的なメソッドとフィールドにアクセスできる。
js> java.lang.Math.PI 3.141592653589793 js> java.lang.Math.cos(0) 1.0
Javaとは違い、JavaScriptでは、メソッドもオブジェクトで、評価したり、呼ぶことができる。メソッドオブジェクトを見れば、メソッドの様々な overload されたフォームを見ることができる
js> f.listFiles java.io.File[] listFiles() java.io.File[] listFiles(java.io.FilenameFilter) java.io.File[] listFiles(java.io.FileFilter) js>
この出力結果では、File クラスの 3つ overload された メソッド listFiles の定義を示す。1)引数がないもの、2)FilenameFilter 引数がある別のもの、3)およびFileFilter 引数を取るもの。すべてのメソッドが File オブジェクトの配列を返す。
パラメタを見て、Java メソッドのタイプを返すことができるのは私たちがメソッドを調べる際に、パラメタかリターンタイプが不確かであるところで踏査のプログラミングで特に役に立つ。
・踏査のプログラミングのための別の役に立つ property はすべての method と field が object のために定義されるのを見る能力です。
JavaScript for..in 構文で、これらのすべての値を印刷することができる:
js> for( i in f){ print(i+"\n") } exists usableSpace parentFile mkdir totalSpace setExecutable toString canExecute wait setReadable setReadOnly getCanonicalPath getClass canonicalPath getAbsoluteFile parent hashCode class isHidden getPath hidden name notify setWritable deleteOnExit length createNewFile file freeSpace toURL directory list toURI mkdirs getFreeSpace absoluteFile canRead getUsableSpace isDirectory equals getAbsolutePath canWrite listFiles absolute getParentFile delete lastModified getTotalSpace getCanonicalFile getName path getParent setLastModified canonicalFile absolutePath renameTo notifyAll compareTo isAbsolute isFile js>
Fileのクラスのメソッドだけが記載されないが、メソッドが基底クラスjava.lang.Object(wait のような)から継承されたのに留意。これで、利用可能なメソッドだけを見ることができるため、オブジェクトに深く入れ子にされた継承の階層構造が、より簡単になる。
s> f.name test.txt js> f.directory false