March 23, 2003
När jag ska kompilera min fil Periodiska.java får jag felet:
Periodiska.java uses unchecked or unsafe operations
och för mer info kompilera med -Xlint, när jag gjort det får jag veta:
Periodiska.java:108: warning: [unchecked] unchecked conversion
found : JmfVikt
required: java.util.Comparator super Atom>
Arrays.sort(atomlista, new JmfVikt());
och
Periodiska.java:108: warning: [unchecked] unchecked method invocation:
sort(T[],java.util.Comparator super T>) in java.util.Arrays is applied to (Atom[],JmfVikt)
Arrays.sort(atomlista, new JmfVikt());
Detta syftar på koden:
public void sortera() { // Sorterar vektorn
Arrays.sort(atomlista, new JmfVikt());
och, ANTAR jag:
class JmfVikt implements Comparator {
/* Metoden compare returnerar -1 om obj1 ska vara före obj2 (obj1 är tyngre),
*noll om de är lika och 1 om obj 2 ska vara för obj1
*/
public int compare(Object ob1, Object ob2) {
Atom p1 = (Atom) ob1; // plocka in 2 st instanser
Atom p2 = (Atom) ob2;
if (p1.vikt() < p2.vikt()) { // om den 2 är tyngre än 1
return -1; // skicka tillbaks -1
} else if (p1.vikt() > p2.vikt()) { // om 1 är större än 2 skicka tillbaks 1
return 1;
} else {
return 0; // annars skicka 0
}
}
}
Nån som vet nåt som kan hjälpa mig?
Tack på förhand!
May 8, 2001
Gissar att du använder Java 1.5 och kanske även generics? I så fall så har felet nog med det att göra men det är svårt att ge ett mer exakt svar med den kod som du postat.
EDIT: Du kanske kan skicka deklaration av din lista?
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
May 8, 2001
Ok, då var det nog inte det som var felet ändå. Det är ju inga generics med där... Använder du generics någonstans överhuvudtaget?
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
May 8, 2001
Man kan även får varningen om man använder otypade listor men det är ju inte det du har gjort.
Kanske dags att ta tag i de nya funktionerna i 1.5 snart...
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
May 8, 2001
Templar- wrote: Jag vet inte ens vad generics är.. själva grejen som jag får fel i är nåt som vi fått av föreläsarna på skolan... :p
Om du vill kan du PM:a koden så kan jag titta vad det är som genererar varningen, annars kan du bara ignorera den och koda vidare. För det är väl bara en varning och inget fel, eller hur?
Vad generics är kan du kolla här:
http://java.sun.com/j2se/1.5.0.....erics.html
Finns en länk till Suns tutorial också om det verkar intressant.
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
May 8, 2001
squarepusher wrote: Kan det inte vara så att klassen Atom måste implementera Comparator?
Nix, men det är ett annat sätt att göra det. Finns en metod i Arrays (och i Collections) som bara tar en array (eller List) som parameter. Den arrayen (eller listan) måste då innehålla objekt som implementerar Comparable.
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
1 Guest(s)