Clojure: funksjonell programmering og backendutvikling på JVM · leksjon

Kalle Java fra Clojure

Oppdag hvordan du kaller Java-metoder, får tilgang til felt og oppretter objekter direkte fra Clojure-kode.

Leksjon 1 av 411 trinn

Kalle Java fra Clojure er en gratis leksjon i Clojure: funksjonell programmering og backendutvikling på JVM på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Clojure: funksjonell programmering og backendutvikling på JVM, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Clojure: funksjonell programmering og backendutvikling på JVM inneholder totalt 4 leksjoner.

Clojure og Java: Bestevenner!

Clojure kjører på Java Virtual Machine (JVM), noe som betyr at språket kan bruke alle de fantastiske Java-bibliotekene direkte! Dette kalles Java Interop.

  • Få tilgang til Java-klasser og -metoder.
  • Utnytt det omfattende Java-økosystemet.
  • Kombiner kraften i Clojure med stabiliteten til Java.

I denne leksjonen viser vi hvordan De kan kalle Java-kode fra Clojure.

Opprette Java-objekter

For å bruke en Java-klasse må De ofte opprette en instans av den. I Clojure kan De gjøre dette ved hjelp av en spesiell syntaks.

  • Bruk (new ClassName args) eller kortformen (ClassName. args).
  • . etter klassenavnet er en praktisk måte å kalle en konstruktør på.

Eksempel: (java.util.Date.) oppretter et nytt Date-objekt.

Demo: Nytt Date-objekt

Prøv å opprette et nytt java.util.Date-objekt. Det representerer gjeldende dato og klokkeslett.

(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)))

Kalle statiske Java-metoder

Statiske metoder tilhører selve klassen, ikke en bestemt objektinstans. De kan kalles direkte på klassen.

  • Syntaks: (ClassName/staticMethodName args)
  • / skiller klassenavnet fra navnet på den statiske metoden.

Eksempel: (java.lang.Math/random) kaller den statiske metoden random i klassen Math.

Demo: Math.random()

La oss hente et tilfeldig tall ved hjelp av Java-statik-metoden Math/random. Den returnerer en double mellom 0.0 (inkludert) og 1.0 (ekskludert).

(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)))

Kall av instansmetoder i Java

Når De har et objekt, kan De kalle dets instansmetoder. Disse metodene opererer på dataene til det aktuelle objektet.

  • Syntaks: (.methodName instance args) eller (. instance methodName args).
  • . før metodenavnet angir et kall til en instansmetode.

Eksempel: (.getTime my-date) kaller metoden getTime på objektet my-date.

Demo: Date.getTime()

Opprett et Date-objekt, og kall deretter metoden getTime(). Denne metoden returnerer antallet millisekunder siden 1. januar 1970 kl. 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)))

Tilgang til Java-felter

Java-objekter kan ha felter (variabler) som lagrer data. De kan få direkte tilgang til disse feltene fra Clojure.

  • Syntaks: (.-fieldName instance) for å hente verdien til et felt.
  • For statiske felter bruker De (.-staticFieldName ClassName).

Eksempel: (.-out System) gir tilgang til det statiske feltet out i klassen System, som er en PrintStream.

Demo: System.out-feltet

Klassen java.lang.System har et statisk felt kalt out, som er et PrintStream-objekt. De kan få tilgang til det for å skrive ut til konsollen.

(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!")))

Kort kontroll: Java-interoperabilitet

De har lært hvordan De kan samhandle med Java-klasser. Hvilket Clojure-uttrykk bruker kortformen ClassName. for å opprette et java.io.File-objekt for banen "myfile.txt"?

Oppsummering: Grunnleggende Java-interoperabilitet

Godt jobbet! De har lært det grunnleggende om å samhandle med Java fra Clojure:

  • Opprette objekter: Bruk (ClassName. args) eller (new ClassName args).
  • Kalle statiske metoder: Bruk (ClassName/staticMethodName args).
  • Kalle instansmetoder: Bruk (.methodName instance args) eller (. instance methodName args).
  • Få tilgang til felter: Bruk (.-fieldName instance).

Denne kraftige funksjonaliteten gjør det mulig å dra nytte av hele Java-økosystemet i Clojure-prosjektene Deres. Deretter skal De utforske hvordan Java-grensesnitt kan implementeres.

Gratis å komme i gang

Lær deg Clojure med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Kalle Java fra Clojure» gratis?

Ja – hele teksten i «Kalle Java fra Clojure» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Clojure: funksjonell programmering og backendutvikling på JVM-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Clojure: funksjonell programmering og backendutvikling på JVM inneholder totalt 4 leksjoner.

Hva lærer jeg i «Kalle Java fra Clojure»?

Oppdag hvordan du kaller Java-metoder, får tilgang til felt og oppretter objekter direkte fra Clojure-kode. Du øver på Clojure: funksjonell programmering og backendutvikling på JVM med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Clojure: funksjonell programmering og backendutvikling på JVM?

Ingen tidligere erfaring er nødvendig. Clojure: funksjonell programmering og backendutvikling på JVM på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Kalle Java fra Clojure»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Clojure: funksjonell programmering og backendutvikling på JVM-leksjonen?

Ja. Alle Clojure: funksjonell programmering og backendutvikling på JVM-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Kalle Java fra Clojure
  2. Implementere Java-grensesnitt
  3. Utnytte Java-biblioteker og -verktøy
  4. Arbeid med Java-samlinger og arrayer
← Tilbake til Clojure: funksjonell programmering og backendutvikling på JVM