20. januar 2006 - 21:54Der er
3 kommentarer og 1 løsning
The method addElement(Object) belongs to the raw type Vector
Hej,
Et eksempel på mit "problem" kan beskrives ud fra nedenstående kode.
import java.util.Vector;
public class TextString { public Vector users;
public TextString() { this.users = new Vector(); }
public void addTextString(String user){ this.users.addElement(user); } }
Ved linien indeholdende "this.users.addElement(user);" kommer mit udviklingsværktøj med en kommentar "Type Safety: The method addElement(Object) belongs to the raw type Vector. References to generic type Vector<E> should be parameterized.".
Den forslår mig at indsætte linien "@SuppressWarnings("unchecked")" over addTextString() -metoden, hvilket dog ikke umeldbart løser problemet, men blot fjerner fejlbeskrivelsen.
Jeg kan dog ikke lige gennemskue hvad "løsningen" er og ved derfor ikke hvordan eller om jeg skal rette fejlen.
Så, hvad betyder fejlen? Og hvordan retter jeg den? (Koden ovenfor er bare et eksempel - har flere steder en næsten enslydende fejl, de fleste med add-metoder for forskellige klasser.)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Det du får er en advarsel, fordi du ikke benytter Java version 5's mulighed for at fortælle i forvejen hvilken slags objekter du vil putte i din vektor.
Her er det strenge du vil putte i den så du kunne erklære den med public Vector<String> users; // Jeg lover jeg kun vil komme String objekter i denne vektor.
du kan også bare ignorere advarslen, fx ved at indsætte den der @SuppressWarnings("unchecked"); linie. Det vil man typisk gøre i de situation hvor man ønsker at brokke allemulige forskellige ting ind i en vektor eller arrayliste eller ...
Hvis du vælger at specificere det skal være strenge bør du også ændre linien this.users = new Vector(); til this.users = new Vector<String>(); //samme løfte en gang til
Kan egentligt godt huske metoden med initialiseringen af vektoren til at indeholde bestemte typer objekter, men vidste ikke at det var det der skabte den advarsel.
Nu du skriver det er nyt for Java version 5 - vil det så betyde noget rent kompatibilitets-mæssigt for mine applikationer? Altså - hvis skal jeg hellere undlade at initialisere med Vector<type>, hvis jeg vil have programmet til at være bagudkompatibelt? Eller har det ikke noget med det at gøre?
Dit andet spm kan jeg desværre ikke svare på med sikkerhed, det er lidt gæt, så stol ikke formeget på nedenstående.
1) du får fejl hvis du prøver at kompilere den nye syntax det med en 'gammel' java compiler.
2) JCode har ikke ændret sig, så en ældre VM skulle ikke have problemer med at køre ny kode. (men opdater alligevel for en sikkerheds skyld)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.