Eclipse og J2SE 5.0

Siden release 3.1 indeholder Eclipse fuld understøttelse af de nye Java-sprogfunktioner i J2SE 5.0. En af de vigtigste følger af denne understøttelse er, at du nok slet ikke lægger mærke til den - alt det, du forventer fungerer i J2SE 1.4, herunder redigering, kompilering, fejlfinding, hurtige rettelser, refactoring, kildefunktioner og søgning, fungerer også problemfrit med J2SE 5.0's nye typer og syntaks. I dette dokument beskrives kort nogle af de mest interessante muligheder, som Eclipse-brugere, der arbejder med J2SE 5.0, vil møde.

Forudsætninger

For at du kan udvikle kode, der er kompatibel med J2SE 5.0, skal du have en J2SE 5.0 eller J2SE 6.0 Java Runtime Environment (JRE). Hvis du starter Eclipse første gang ved hjælp af J2SE 5.0 JRE, bruger Eclipse det miljø som standard. Ellers skal du bruge indstillingssiden Åbner indstillingssiden Installerede JRE'er Java > Installerede JRE'er til at registrere det i Eclipse.

I dokumentet beskrives kort nogle af de nye sprogfunktioner i J2SE 5.0, men det er ikke et egentligt øveprogram i brugen af disse funktioner. Der er flere oplysninger her.

Compilerens kompatibilitetsniveau

Hvis du vil bruge de nye J2SE 5.0-funktioner, skal du arbejde med et projekt, som niveau 5.0 er aktiveret for, og som har en 5.0 JRE. Nye projekter gøres automatisk kompatible med 5.0, hvis du vælger en 5.0 JRE på første side i Åbner guiden Nyt Java-projekt guiden Nyt Java-projekt:

Guiden Nyt projekt

Gør følgende, hvis du vil konvertere et eksisterende J2SE 1.4-projekt til J2SE 5.0:
  1. Kontrollér, at du har installeret J2SE 5.0.
  2. Brug 5.0-funktionerne i koden.
  3. Hvis det bliver angivet, at der er en compilerfejl, skal du bruge Hurtig rettelse til at opdatere projektets kompatibilitetsniveau:

    Hurtig rettelse til aktivering af J2SE 5.0

Hvis du vil have flere finjusteringsmuligheder, kan du indstille kompatibilitetsniveauet globalt for et arbejdsområde (via indstillingssiden Åbner indstillingssiden for Java-compileren Java > Compiler) eller for hvert enkelt projekt (vælg Egenskaber > Java-compiler på projektets kontekstmenu). Projekter med forskellige kompatibilitetsniveauer kan eksistere side om side i arbejdsområdet og være afhængige af hinanden. Du kan også justere, hvilke compileradvarsler og -fejl der bliver genereret for hvert projekt, ved hjælp af Egenskaber > Java-compiler > Fejl/advarsler. Afsnittet med Generisk type og Annotationer indeholder indstillinger, der er tilføjet til J2SE 5.0.

Generiske typer

Med generiske typer kan objekter af samme klasse fungerer problemfrit i objekter, der har en anden type. De tillader f.eks. garantier på kompileringstidspunktet for, at en List<String> altid indeholder strenge, og at List<Integer> altid indeholder heltal.

Alle steder, hvor Eclipse håndterer en ikke-generisk type, kan også en generisk type håndteres: Desuden er der tilføjet en ny refactoring: Udled generiske typeargumenter kan bruges til at udlede typeparametre for enhver referencetype i en klasse, en pakke eller et helt projekt.

Aktivering af Udled generiske typeargumenter

Når du starter refactoring, sker følgende:

Startet Udled generiske typeargumenter

Eclipse har nye indstillinger for søgning efter referencer til generiske typer. Eksempel:

Eksempel med fire forskellige List-forekomster med parametre

Vælg referencen til List<Integer>, og brug Søg > Referencer > Projekt fra kontekstmenuen, hvis du vil fremhæve listetyperne på alle fire linjer:

Søgning uden filtre

Ved hjælp af menuen i oversigten Søg kan resultaterne filtreres:

Filtret Inkompatible typeargumenter efterlader kun referencer til typer, som er tildelingskompatible med den valgte type:

Filtrér inkompatible

Filtret Unøjagtige typeargumenter efterlader kun typereferencer med nøjagtigt samme signatur:

Filtrér unøjagtige

Annotationer

Annotationer tilknytter metadata om, hvordan Java-typer og metoder bruges og dokumenteres i Java-kilden, og kan derefter udvirke kompilering eller være genstand for forespørgsler på udførelsestidspunktet. @Override resulterer f.eks. i en compileradvarsel, hvis den annoterede metode ikke tilsidesætter en metode i en superklasse:

Tilsidesæt annotation

Alt, hvad du kan gøre i forbindelse med en Java-type, kan du også gøre med en annotation:

En meget nyttig annotation, der er fuldt understøttet i Eclipse, er @SuppressWarnings. Tag f.eks. en privat metode, som ikke benyttes for øjeblikket, men som du helst ikke vil slette:

Advarsel: ubrugt privat metode

Hvis du starter en hurtig rettelse i forbindelse med advarslen, får du vist et forslag om at tilføje annotationen @SuppressWarnings:

SuppressWarnings foreslås

Hvis du vælger den hurtige rettelse, tilføjes annotationen. Eclipse-compileren respekterer annotationen ved at fjerne advarslen på foo:

SuppressWarnings indsat

Enumerationer

Enumerationer er typer, som oprettes på udførelsestidspunktet af et kendt, finit sæt objekter:

enum-type

Igen gælder det, at alt, hvad du kan gøre i forbindelse med en Java-klasse, kan du gøre i forbindelse med en enumeration:

Automatisk indramning

Automatisk indramning og automatisk ikke-indramning (autoboxing/unboxing) gør det muligt at benytte elegant syntaks, når primitive typer tildeles eller hentes fra objektreferencer:

fremhævning af automatisk indramning aktiveret

Eclipses kildemanipulationsfunktioner håndterer automatisk indramning problemfrit og giver de nye lokale variabler de korrekte typer og den korrekte kodeassistance. For at fremme kodeforståelsen kan du desuden markere forekomster af konverteringer af automatisk indramning/ikke-indramning:

Udvidet for-løkke

J2SE 5.0 kan tilbyde en ny, renere syntaks til de almindelige tilfælde, hvor der udføres funktioner på hvert enkelt element i et array eller en samling. Eclipse indeholder kodeskabelonen "foreach", som automatisk kan gætte, hvilken samling der skal gentages:

foreach-skabelon foreslås

Når du vælger skabelonen, sker følgende:

foreach-skabelon indsat

Eclipse indeholder også hurtigassistancen "Konvertér til udvidet for-løkke", der gør det muligt at opgradere til 1.4 for-løkker.

Statiske importer

Med statiske importer kan du bruge statiske felter og metoder fra andre klasser ukvalificeret.

Java-editorens indholdsassistance kan foreslå sådanne statiske medlemmer og tilføjer en statisk import, når det er påkrævet. Du kan hente disse forslag ved at konfigurere de foretrukne statiske importer på indstillingssiden Åbner indstillingssiden for indholdsassistance til foretrukne Java > Editor > Indholdsassistance > Foretrukne.

Konvertér J2SE 1.4-kode til 5.0

Eclipse indeholder følgende værktøjer, som du kan bruge ved overførslen af J2SE 1.4-kode til 5.0: