/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
typedef i java
Fra : Thomas Krog


Dato : 10-05-01 11:11

Findes der noget i java der svarer til typedef fra c++ dvs:
typedef int VINDEX;

efter denne linje i c++ virker VINDEX som et alias for int.

Eller er man i java nødt til at oprette en klasse (*) for at opnå samme
virkning

(*) Med alle de ulember det indebærer:
- brug af new operator
- stærkt stigende antal klasser hvis man forsgøer at abstrahere de fleste
typer
- redefinering af alle de operatorer der kan anvendes på standard typer.
- a+b bliver til a.add(b) (betyder at lange udtryk bliver sværere at læse)



 
 
Martin Schou (10-05-2001)
Kommentar
Fra : Martin Schou


Dato : 10-05-01 12:58

Desværre kender jeg ikke svaret på dit spørgsmål.

Men jeg vil mægtig gerne vide, hvad pointen er i at bruge et andet navn
for simple datatyper, for jeg kan ikke rigtig se det smarte i at skrive

....
typedef int WINDEX;
WINDEX TalA, TalB;
....

i stedet for at skrive

....
int TalA, TalB;
....

Jeg er ganske nysgerrig.

/Hektor

Lars Dam (10-05-2001)
Kommentar
Fra : Lars Dam


Dato : 10-05-01 14:39

On Thu, 10 May 2001 12:10:52 +0200, "Thomas Krog"
<rick@kampsax.dtu.dk> wrote:

>Findes der noget i java der svarer til typedef fra c++ dvs:
>typedef int VINDEX;

Niks.
>
>efter denne linje i c++ virker VINDEX som et alias for int.
>
>Eller er man i java nødt til at oprette en klasse (*) for at opnå samme
>virkning

Yup.

>(*) Med alle de ulember det indebærer:
>- brug af new operator
>- stærkt stigende antal klasser hvis man forsgøer at abstrahere de fleste
>typer
>- redefinering af alle de operatorer der kan anvendes på standard typer.
>- a+b bliver til a.add(b) (betyder at lange udtryk bliver sværere at læse)

Dette er operator overloading som Java ikke har. Så du bliver nødt til
at lave add(),sub() etc. Med vilje ikke implementeret i Java da
op.overloading i 99% bliver misbrugt.

Jeg er nu nysgerrig, hvorfor har du behov for at 'typedef'e'? Måske
kan det være at du ikke har brug for det, men du kun ser de muligheder
du kender fra C++ verdenen?

Selv har jeg kodet Java i mange år nu og har ikke haft brug for typdef
endnu.

vh. ld

--
"Time is the fire in which we burn"

Thomas Krog (10-05-2001)
Kommentar
Fra : Thomas Krog


Dato : 10-05-01 16:28

> Dette er operator overloading som Java ikke har. Så du bliver nødt til
> at lave add(),sub() etc. Med vilje ikke implementeret i Java da
> op.overloading i 99% bliver misbrugt.

til klasser for komplekse tal og matricer synes jeg nu det er meget
praktisk. Kan du give et eksempel på misbrug?

> Jeg er nu nysgerrig, hvorfor har du behov for at 'typedef'e'?

Primært for at gøre det overkommeligt at ændre typen af fx. VINDEX (vertex
index) fra eksemplet. For tiden skriver jeg en algoritme i c++ som regner på
et antal punkter i planen. Det er nærmest umuligt at sige på forhånd hvilken
type disse koordinater skal have. Følgende java typer er alle gode
kandidater:
short
int
long
float
double
Desuden er unsigned også en mulighed.
Algoritmens hastighed kan være stærkt afhængig af koordinaternes type. Det
samme gælder pladsforbruget. Engang var hastigheden næsten den samme for int
og float, men idag er float væsentligt hurtigere(*). Den slags er svært at
forudsige. Måske vil brugeren gerne kunne ændre typen alt efter hvilken
opgave algoritmen skal løse. Derfor er koordinaterne blevet typedef'et. I
rene algoritmer typedef'er jeg næsten alle typer så der aldrig står en
grundlæggende type i min kode. Som regl får jeg et helt typedef hirarki der
minder lidt om et klassehirarki.

Desuden mener jeg også at koden er en smule mere læselig da VINDEX er mere
beskrivende end int.

>Måske
> kan det være at du ikke har brug for det, men du kun ser de muligheder
> du kender fra C++ verdenen?

jo, hvis du kender nogle alternative løsninger i java vil jeg selvfølgelig
gerne høre...


(*) og for rigtig lang tid siden (fra før co-processoren) var der kæmpe
hastighedsforskel på int og float



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste