Brug af array som objekt i extended class af abstract class

Tags:    java

Okay, titlen er noget rodet, men mit problem er svært at forklare, så jeg vil lægge ud med noget kode.

Fold kodeboks ind/udKode 

Jeg er i gang med et projekt hvor jeg har en abstrakt klasse, som jeg bruger som en skabelon for nogle andre klasser. I en af metoderne ved jeg at min parameter skal være hhv. byte array, HashMap og formentlig ArrayList. Derfor vil jeg i den abstrakte klasse lave min metode med Object som parameter, men jeg ved at det kan være lidt problematisk med arrays. Derfor lavede jeg disse test klasser.

Når jeg prøver at compile Test2, får jeg følgende fejlmeddelelse:

Test2 is not abstract and does not override abstract method run(java.lang.Object) in Test

Men jeg har læst på internettet at array ER et Object, og på Java dokumentationen at Array rent faktisk extender Object, så jeg vil jo umiddelbart mene at det kan lade sig gøre. Men jeg ved ikke hvordan.



Indlæg senest redigeret d. 15.01.2008 08:08 af Bruger #12726
3 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
det er fordi du ikke implementerer run metoden run

Fold kodeboks ind/udKode 


fjern brackets, og ret typen fra int til Object, så burde det virke.
Man kan få en god lang snak om objecter, men metode signaturen skal stadig være den samme.

Jeg ved faktisk ikke om man kan typecaste et Object til Object[]. men du kan da prøve.

int er så i øvrigt ikke et objekt i java.

Alternativt kunne du overveje at lave det med type parametrisering så du slipper for at typecaste manuelt :)

Jeg koder ikke så flittigt i java længere så jeg vil ikke garantere mod syntaks fejl :)

Fold kodeboks ind/udKode 


Håber det kan hjælpe



Der er forskel på array og Array i dokumentationen. Array (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html ) har en masse metode vi kan kalde, som f.eks. getFloat() osv.

Derimod har array ikke disse metoder, og er desuden en primitiv.

Hvis din funktion skal virke, kan du f.eks. bruge public void run(Array<Integer> arrayObj) {};



Derimod har array ikke disse metoder, og er desuden en primitiv.


Nope...arrays er objekter.



t