Clojure Programming/Examples/API Examples/Java Interaction

      memfn

      (map (memfn charAt i) ["fred" "ethel" "lucy"] [1 2 3])
      -> (\r \h \y)
      
      
      ↑Jump back a section

      proxy

      (defn rev-vector-seq
        [v]
        (when (< 0 (count v))
          (proxy [clojure.lang.ISeq] []
            (seq   [] this)
            (first [] (peek v))
            (rest  [] (rev-vector-seq (pop v)))))) 
      
      (doto (javax.swing.JFrame.)
        (.addKeyListener (proxy [java.awt.event.KeyListener] []
             (keyPressed [e] (println (.getKeyChar e) " key pressed"))
             (keyReleased [e] (println (.getKeyChar e) " key released"))
             (keyTyped [e] (println (.getKeyChar e) " key typed"))))
        (.setVisible true))
      
      ↑Jump back a section

      into-array

      user=> (into-array [1 2 3])
      #<Integer[] [Ljava.lang.Integer;@15fadcf>
      user=> (into-array [1 2 "asd"])
      java.lang.IllegalArgumentException: array element type mismatch (NO_SOURCE_FILE:0)
      user=>
      
      ↑Jump back a section

      double-array

      user=> (into-array (map double-array [[1.0] [2.0]])) 
      #<double[][] [[D@1fa1bb6> 
      
      
      ↑Jump back a section

      genclass

      expmeth/ClassA.java: 
      package expmeth; 
      public class ClassA { 
          public void hello() { 
              System.err.println("hello from Java!"); 
          } 
          public void hello(int x) { 
              System.err.println("hello from Java " + x); 
          } 
      } 
      
      expmeth/TestMe.clj: 
      (ns expmeth.TestMe 
        (:gen-class 
         :extends expmeth.ClassA 
         :exposes-methods {hello helloSuper})) 
      (defn -hello 
        ([this] 
           (.helloSuper this) 
           (println "hello from clojure!")) 
        ([this x] 
           (.helloSuper this x) 
           (println "hello from clojure..." x))) 
      testing: 
      (.hello (expmeth.TestMe.) 17) 
      (.hello (expmeth.TestMe.) )
      
      
      ↑Jump back a section

      supers

      user=> (import [javax.swing JFrame])
      javax.swing.JFrame
      user=> (supers JFrame)
      #{java.awt.Component java.awt.Frame java.awt.Container 
      java.awt.Window java.awt.MenuContainer javax.swing.RootPaneContainer 
      java.lang.Object java.awt.image.ImageObserver java.io.Serializable 
      javax.swing.WindowConstants javax.accessibility.Accessible}
      
      ↑Jump back a section
      Last modified on 1 June 2011, at 16:32