Avatar billede hurra Novice
14. september 2010 - 13:01 Der er 4 kommentarer og
1 løsning

Matmatisk og generics

Det virker så let, men jeg kan ikke få det til at virke. Jeg har en collection af generics (som arver fra Number). Jeg har brug for at kunne lave nogle beregninger på mit data, men 'The operator + is undefined for the argument type(s) java.lang.Number, java.lang.Number'.

En stærkt simplificeret version af min kode kunne se ud som følger:

static <T extends Number> T add(T a, T b) {
    return b + a;
}

Kan det bringes til at virke, uden af ødelægge det generiske? Det er ikke et krav at min collection skal være af Numbers, men det skal være noget der understøtter double, float, int, osv.
Avatar billede hurra Novice
14. september 2010 - 13:07 #1
Jeg var måske lidt for hurtigt til at få lavet den simplificerede version. Den her version er bedre.

class MyClass {
    public Collection<Number> data;
    public void something() {
        Number max = (Number) Collection.max(data);
        for(Number n : data) {
            Number tp = n + max;
        }
    }
}
Avatar billede hurra Novice
14. september 2010 - 13:08 #2
Der er 2 fejl i det stykke kode,
1) Collection.max er ikke defineret for Number
2) Problematikken i at ligge to Number sammen.
Avatar billede arne_v Ekspert
14. september 2010 - 19:35 #3
Ikke bare kan man ikke bruge operatorer paa Number, men der er heller ikke defineret add/sub/mul/div metoder for Number.

Jeg mener ikke at du kan goere det du vil i Java. Java er ikke C++ !

Det bedste forsoeg jeg kan opdrive er sidste post her:

http://forums.sun.com/thread.jspa?threadID=5419467
Avatar billede hurra Novice
15. september 2010 - 10:23 #4
Sørens osse, nå jeg kommer nok igennem det. Tal for hjælpen aligevel, sender du lige et svar, arne_v?
Avatar billede arne_v Ekspert
15. september 2010 - 15:27 #5
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