# Benutzt die Java-Klasse "Demo" aus Listing 2 package require java set env(TCL_CLASSPATH) "." # statische Variable puts "Demo.NAME '[java::field Demo NAME]'" # statische Methode set instance0 [java::call Demo getInstance "Statisch"] puts "Aufruf getInstance '[java::prop $instance0 a]'" # Objekt erzeugen set instance [java::new Demo "Erstes Objekt"] # Wert abfragen und ändern puts "Bean-Style '[java::prop $instance a]'" java::prop $instance a "Geänderter Name" puts "Bean-Style '[java::prop $instance a]'" # Methode aufrufen puts "Getter-Aufruf '[$instance getA]'" puts "Aufruf von methode, Ausgabe '[$instance methode]'" puts "Aufruf von toString, Ausgabe '[$instance toString]'" # überladene Methode catch {$instance überladen 1} err puts stderr $err puts "Eingabe als Integer, Ausgabe '[$instance {überladen int} 42]'" puts "Eingabe als Double, Ausgabe '[$instance {überladen double} 42.0]'" # Fehler fangen foreach wert {0 1 2 3} { puts -nonewline "Eingabe für Methode fehler='$wert'" java::try { puts ", Ausgabe '[$instance fehler $wert]'" } catch {IllegalArgumentException iaexp} { puts stderr ", Eingabefehler '[$iaexp getMessage]'" } catch {IllegalStateException isexp} { puts stderr ", Interner Fehler '[$isexp getMessage]'" } catch {Exception exp} { puts stderr ", Fehler '[$exp getMessage]'" } } # gegen null prüfen set b [java::prop $instance b] if [java::isnull $b] { puts "B ist null" } # Objektreferenzen in Java verwenden set instance2 [java::new Demo "Zweites Objekt" $instance] puts "toString '[$instance2 toString]'"