Skip to content

Instantly share code, notes, and snippets.

(ns clojure.examples.instance
(:gen-class
:implements [java.util.Iterator]
:init init
:constructors {[String] []}
:state state))
(gen-interface
:name demo.api.SpeedBoat
:methods [[zoom [int] int]
[fuelLeft [] int]])
(deftype BoatImpl [state]
demo.api.SpeedBoat
(zoom [this distance]
(dosync
(alter state - (* 10 distance)))
public interface demo.impl.boat.Boat{
public abstract java.lang.Object go(java.lang.Object);
}
(defprotocol Boat
(go [boat ^int distance]))
(deftype BoatImpl [state]
Boat
(go [this distance]
(dosync
(alter state - distance))))
(ns demo.impl.store)
(gen-interface
:name demo.api.Store
:methods [[buy [] demo.api.Store]
[buy [int] demo.api.Store]
[sell [] demo.api.Store]
[getQty [] int]])
(gen-class
import demo.api.Store;
import demo.api.StoreFactory;
public class Main {
public static void main(String[] args) {
Store s = StoreFactory.makeStore();
System.out.println("qty = " + s.getQty());
s.buy().buy().buy().sell().buy();
System.out.println("qty = " + s.getQty());
public interface demo.api.Store{
public abstract demo.api.Store buy();
public abstract demo.api.Store buy(int);
public abstract demo.api.Store sell();
public abstract int getQty();
}
(assoc (Car. 2010 "Honda" "Civic") :model "Accord")
;; -> #:enhanced-record-blog.Car{:year 2010, :make "Honda", :model "Accord"}
(new-rocket-car {:color "Blue"})
;; -> (new-rocket-car {:color "Blue"})
#:enhanced-record-blog.Car{:year 2009, :make "Honda", :model "Fit"}
;; -> No dispatch macro for: :