Avatar billede jespersahner Nybegynder
12. november 2004 - 01:24 Der er 8 kommentarer og
1 løsning

Type-bestemmelse af primitive datatyper (int, double osv.)

Med o.getClass().getName(), hvor o er et objekt, fås typen af objektet.

Findes den samme funktionalitet i relation til primitive datatyper (int, double osv.)?
Avatar billede simonvalter Praktikant
12. november 2004 - 02:23 #1
Jeg kan ikke rigtigt se formålet med det men du kan da hurtigt implementere noget der retunerer en string som o.getClass().getName() gør, for en primitiv type :)

    public static void main(String[] args){
        short bla = 1;
        System.out.println(getType(bla));
    }

    public static String getType(short input) {
        return "short";
    }

    public static String getType(int input) {
        return "int";
    }

jeg er da interesseret i at høre om der kunne være tilfælde hvor det kunne være brugbart.. måske noget du kender fra et andet sprog?
Avatar billede jespersahner Nybegynder
12. november 2004 - 09:27 #2
Årsagen var egentlig en umiddelbar undren over, at write-metoder i forbindelse med DataOutputStream er specifikke for den type variabel, man ønsker at tilgå, f.eks. writeInt(int i), WriteDouble(double d) osv. Hvorfor ikke bare write(int i), write(double d) osv.?
Avatar billede arne_v Ekspert
12. november 2004 - 10:12 #3
Det behøver man såmænd ikke runtime type bestemmelse til. Det burde
god gammeldags metode overload kunne klare.

Jeg formoder at det primært er fordi at writeInt, writeShort og writeByte
kunne være lidt farlige ellers.

Med writeXxx kan man umiddelbart se om man skriver 1, 2 eller 4 bytes.

Med write skal til at kigge på argumentet for at se hvor mange bytes
man udksriver.

byte b = 1;
s.write(b);

og

int i = 1;
s.write(i);

er måske simple nok, men hvad med

byte b = 1;
s.write(b & 0x7F);

og

s.write(1);

?

[husk at simple data typer ikke kan betragtes som Object]
Avatar billede jespersahner Nybegynder
12. november 2004 - 11:55 #4
->arne_v: Enig. Kan der yderligere være tænkt i performance ved at definere type-specifikke write-metoder, f.eks. writeDouble(), i forhold til brug af metode-overload? Jeg tænker på, om metode-overload simpelthen tager noget tid, idet input først skal identificeres blandt flere kandidater, eller er det helt marginalt/ubetydeligt?
Avatar billede arne_v Ekspert
12. november 2004 - 11:58 #5
Der burde ikke være nogen performance forskel.

Fordi valg af overloaded metode sker på compile time ikke runtime.
Avatar billede arne_v Ekspert
21. november 2004 - 19:36 #6
jesper>

Tid at få afsluttet dette spørgsmål ?

Bed evt. simon og/eller mig ligge et svar hvis der har været noget brugbart.
Avatar billede simonvalter Praktikant
22. november 2004 - 20:02 #7
jeg tvivler på min kode ville have et formål.. ;-)
Avatar billede jespersahner Nybegynder
23. november 2004 - 00:43 #8
->arne_v: Smid lige et svar, så må Simon have til gode til en anden go' gang :-)
Avatar billede arne_v Ekspert
23. november 2004 - 07:43 #9
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester