Chiamare Java da Clojure
Scopra come invocare metodi Java, accedere ai campi e istanziare oggetti direttamente dal codice Clojure
Chiamare Java da Clojure è una lezione Clojure Functional Programming & JVM Backend Development gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Clojure Functional Programming & JVM Backend Development, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Clojure Functional Programming & JVM Backend Development include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Clojure & Java: Best Friends!
Clojure runs on the Java Virtual Machine (JVM), which means it can use all the amazing Java libraries directly! This is called Java Interop.
- Access Java classes and methods.
- Leverage the vast Java ecosystem.
- Combine Clojure's power with Java's stability.
This lesson will show you how to call Java code from Clojure.
Creating Java Objects
To use a Java class, you often need to create an instance of it. In Clojure, you can do this using a special syntax.
- Use
(new ClassName args)or the shorthand(ClassName. args). - The
.after the class name is a convenient way to call a constructor.
Example: (java.util.Date.) creates a new Date object.
Demo: New Date Object
Try creating a new java.util.Date object. It will represent the current date and time.
(ns my-app.core
(:gen-class))
(defn -main
"Creates and prints a new Java Date object."
[& args]
(let [current-date (java.util.Date.)]
(println "Current date:" current-date)))Calling Static Java Methods
Static methods belong to the class itself, not to a specific object instance. You can call them directly on the class.
- Syntax:
(ClassName/staticMethodName args) - The
/separates the class name from the static method name.
Example: (java.lang.Math/random) calls the random static method of the Math class.
Demo: Math.random()
Let's get a random number using Java's Math/random static method. It returns a double between 0.0 (inclusive) and 1.0 (exclusive).
(ns my-app.core
(:gen-class))
(defn -main
"Generates and prints a random number using Java's Math/random."
[& args]
(let [rand-num (java.lang.Math/random)]
(println "Random number:" rand-num)))Calling Instance Java Methods
Once you have an object, you can call its instance methods. These methods operate on that specific object's data.
- Syntax:
(.methodName instance args)or(. instance methodName args). - The
.before the method name indicates an instance method call.
Example: (.getTime my-date) calls the getTime method on the my-date object.
Demo: Date.getTime()
Create a Date object and then call its getTime() method. This method returns the number of milliseconds since January 1, 1970, 00:00:00 GMT.
(ns my-app.core
(:gen-class))
(defn -main
"Creates a Date object and calls its getTime() method."
[& args]
(let [current-date (java.util.Date.)
time-in-millis (.getTime current-date)]
(println "Current date:" current-date)
(println "Milliseconds since epoch:" time-in-millis)))Accessing Java Fields
Java objects can have fields (variables) that store data. You can access these fields directly from Clojure.
- Syntax:
(.-fieldName instance)for getting a field's value. - For static fields, use
(.-staticFieldName ClassName).
Example: (.-out System) accesses the out static field of the System class, which is a PrintStream.
Demo: System.out Field
The java.lang.System class has a static field named out, which is a PrintStream object. We can access it to print to the console.
(ns my-app.core
(:gen-class))
(defn -main
"Accesses System.out and prints a message using its println method."
[& args]
(let [out-stream (.-out java.lang.System)]
(.println out-stream "Hello from System.out!")))Quick Check: Java Interop
You've learned how to interact with Java classes. Which Clojure expression uses the ClassName. shorthand to instantiate a java.io.File object for the path "myfile.txt"?
Recap: Java Interop Basics
Great job! You've learned the fundamentals of interacting with Java from Clojure:
- Instantiate objects: Use
(ClassName. args)or(new ClassName args). - Call static methods: Use
(ClassName/staticMethodName args). - Call instance methods: Use
(.methodName instance args)or(. instance methodName args). - Access fields: Use
(.-fieldName instance).
This powerful capability allows you to leverage the entire Java ecosystem within your Clojure projects. Next, we'll explore implementing Java interfaces.
Domande Frequenti
La lezione «Chiamare Java da Clojure» è gratuita?
Sì — il testo completo di «Chiamare Java da Clojure» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Clojure Functional Programming & JVM Backend Development, passa a CoddyKit PRO. Il corso Clojure Functional Programming & JVM Backend Development include 4 lezioni in totale.
Cosa imparerò in «Chiamare Java da Clojure»?
Scopra come invocare metodi Java, accedere ai campi e istanziare oggetti direttamente dal codice Clojure Eserciti Clojure Functional Programming & JVM Backend Development con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Clojure Functional Programming & JVM Backend Development?
Non è richiesta alcuna esperienza precedente. Clojure Functional Programming & JVM Backend Development su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Chiamare Java da Clojure»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Clojure Functional Programming & JVM Backend Development?
Sì. Ogni lezione Clojure Functional Programming & JVM Backend Development include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Chiamare Java da Clojure
- Implementazione delle interfacce Java
- Utilizzo di librerie e strumenti Java
- Lavorare con collezioni e array Java