Bis jetzt wurde die Java-Methode zur Übergabe von Parametern verwendet. Dank Ruby kann man jedoch die Klammern weglassen.
irb(main):007:0> java.lang.System::out.println "Hello World" Hello World => nil
Ein weiterer Vorteil von Ruby liegt darin, dass man leicht Einblick in Objekte erlangen kann. Die Reflection-API von Java wird dadurch quasi überflüssig.
Um einen Überblick über alle Methoden zu erhalten, muss einfach die methods-Funktion des Objekts aufgerufen werden, so wie man es auch in Ruby tun würde.
Auf ähnliche Weise lassen sich auch die Konstanten ausfindig machen:
irb(main):009:0> java.lang.Math.constants => ["PI", "E"]
Oder die Vorläufer einer Klasse:
irb(main):011:0> java.lang.Math.ancestors => [Java::JavaLang::Math, Java::JavaLang::Object,
ConcreteJavaProxy, JavaProxy, JavaProxyMethods, Object, Kernel]
Sogar der Typ der Klasse lässt sich so anzeigen:
irb(main):012:0> java.lang.Math.class => Class irb(main):013:0> java.lang.class => Module
Das Ausschreiben der vollständigen Namen von Paketen ist ermüdend. Um eine Klasse zu importieren, lässt sich auch die Funktion include_class einsetzen.
irb(main):015:0> include_class java.lang.System => Java::JavaLang::System
Die Klasse lässt sich dann genauso verwenden, als hätte man eine Anweisung in Java importiert.
irb(main):016:0> System.out.println("Wir wurden importiert") Wir wurden importiert => nil
Das Importieren einer Klasse schlägt jedoch fehl, wenn versucht wird, eine Klasse zu laden, die im Ruby-Namensraum bereits existiert.
irb(main):014:0> include_class java.lang.Math (eval):1 warning: already initialized constant Math => Java::JavaLang::Math
Die Lösung liegt hier in der Umbenennung der Klasse. In diesem Fall wird aus der Klasse Math die Klasse JMath.
irb(main):017:0> include_class('java.lang.Math') {|package,name| "J#{name}"} => ["java.lang.Math"]
Diese kann dann folgendermaßen eingesetzt werden:
Neueste Kommentare
Noch keine Kommentare zu JRuby: Mit Java und Ruby die Entwicklungsarbeit optimieren
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.