Funktionel programmering i Clojure og backendudvikling på JVM · Lektion

Kald af Java fra Clojure

Opdag, hvordan De kalder Java-metoder, tilgår felter og opretter objekter direkte fra Clojure-kode.

Lektion 1 af 411 trin

Kald af Java fra Clojure er en gratis Funktionel programmering i Clojure og backendudvikling på JVM-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Funktionel programmering i Clojure og backendudvikling på JVM, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Funktionel programmering i Clojure og backendudvikling på JVM-kurset indeholder 4 lektioner i alt.

Clojure og Java: Bedste venner!

Clojure kører på Java Virtual Machine (JVM), hvilket betyder, at sproget kan bruge alle de fantastiske Java-biblioteker direkte! Det kaldes Java-interoperabilitet.

  • Få adgang til Java-klasser og -metoder.
  • Udnyt det omfattende Java-økosystem.
  • Kombiner Clojures styrke med Javas stabilitet.

I denne lektion viser vi dig, hvordan du kalder Java-kode fra Clojure.

Opret Java-objekter

Hvis du vil bruge en Java-klasse, skal du ofte oprette en instans af den. I Clojure kan du gøre det ved hjælp af en særlig syntaks.

  • Brug (new ClassName args) eller den korte form (ClassName. args).
  • . efter klassenavnet er en praktisk måde at kalde en konstruktør på.

Eksempel: (java.util.Date.) opretter et nyt Date-objekt.

Demo: Nyt Date-objekt

Prøv at oprette et nyt java.util.Date-objekt. Det repræsenterer den aktuelle dato og det aktuelle klokkeslæt.

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

Kald statiske Java-metoder

Statiske metoder tilhører selve klassen og ikke en bestemt objektinstans. Du kan kalde dem direkte på klassen.

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

Eksempel: (java.lang.Math/random) kalder den statiske metode random i klassen Math.

Demo: Math.random()

Lad os hente et tilfældigt tal ved hjælp af Javas statiske Math/random-metode. Den returnerer en double mellem 0.0 (inklusive) og 1.0 (eksklusive).

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

Kald af instansmetoder i Java

Når du har et objekt, kan du kalde dets instansmetoder. Disse metoder arbejder på dataene i netop dette objekt.

  • Syntaks: (.methodName instance args) eller (. instance methodName args).
  • . før metodenavnet angiver et instansmetodekald.

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

Demo: Date.getTime()

Opret et Date-objekt, og kald derefter dets getTime()-metode. Denne metode returnerer antallet af 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)))

Adgang til felter i Java

Java-objekter kan have felter (variabler), der gemmer data. Du kan få direkte adgang til disse felter fra Clojure.

  • Syntaks: (.-fieldName instance) for at hente værdien af et felt.
  • Brug (.-staticFieldName ClassName) til statiske felter.

Eksempel: (.-out System) åbner det statiske felt out i klassen System, som er en PrintStream.

Demo: Feltet System.out

Klassen java.lang.System har et statisk felt med navnet out, som er et PrintStream-objekt. Vi kan få adgang til det for at skrive 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!")))

Hurtigt tjek: Java-interoperabilitet

Du har lært, hvordan du interagerer med Java-klasser. Hvilket Clojure-udtryk bruger den korte notation ClassName. til at oprette et java.io.File-objekt for stien "myfile.txt"?

Opsummering: Grundlæggende Java-interoperabilitet

Godt gået! Du har lært det grundlæggende i at interagere med Java fra Clojure:

  • Opret objekter: Brug (ClassName. args) eller (new ClassName args).
  • Kald statiske metoder: Brug (ClassName/staticMethodName args).
  • Kald instansmetoder: Brug (.methodName instance args) eller (. instance methodName args).
  • Få adgang til felter: Brug (.-fieldName instance).

Denne stærke funktion gør det muligt at udnytte hele Java-økosystemet i dine Clojure-projekter. Derefter skal du se på, hvordan du implementerer Java-grænseflader.

Gratis at komme i gang

Lær Clojure med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Kald af Java fra Clojure” gratis?

Ja — hele teksten til “Kald af Java fra Clojure” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Funktionel programmering i Clojure og backendudvikling på JVM-kurset, skal du opgradere til CoddyKit PRO. Funktionel programmering i Clojure og backendudvikling på JVM-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Kald af Java fra Clojure”?

Opdag, hvordan De kalder Java-metoder, tilgår felter og opretter objekter direkte fra Clojure-kode. Du øver dig i Funktionel programmering i Clojure og backendudvikling på JVM med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Funktionel programmering i Clojure og backendudvikling på JVM?

Der kræves ingen tidligere erfaring. Funktionel programmering i Clojure og backendudvikling på JVM på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Kald af Java fra Clojure”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Funktionel programmering i Clojure og backendudvikling på JVM-lektion?

Ja. Alle Funktionel programmering i Clojure og backendudvikling på JVM-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Kald af Java fra Clojure
  2. Implementering af Java-interfaces
  3. Udnyttelse af Java-biblioteker og -værktøjer
  4. Arbejde med Java-samlinger og arrays
← Tilbage til Funktionel programmering i Clojure og backendudvikling på JVM