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:
Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…
Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…
Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.
Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…
Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.