esa94 wrote:TheFish wrote:esa94 wrote:Generiikkoja ei kannata edes käyttää kun ne ei oo templaattoja.
Yleensä kun ite tarttisin niin pitäis jotenkin erikoistaa muutamaa geneeristä metodia mutta se nyt vaan on sitten mahdotonta. Ai jaa.
Minusta kuulostaa jotenkin siltä, että ongelmana on vain se, että yrität koodata C++:aa Javalla. Kyseessä on eri kieli, joten asiat tehdään eri tavalla. Tuo on ihan niin kuin sanoisi, että Linux on vittumainen, koska siinä ei ole Windowsin rekisteriä.
No siitähän
on kyse tavallaan juu. Joka tapauksessa en ole oikeen keksinyt montaakaan asiaa joihin generiikkaa voi käyttää jos ei ole spesialisaatiomahdollisuutta tai keinoa tunnistaa parametrien tietotyyppejä. Jos vois spesialisoida niin ois paljon yksinkertasempaa tehdä jotain asioita.
Tietty vois vaan käyttää Objecteja ja muuta mutta se on niin pahaa että sattuu.
Et ole keksinyt niille käyttöä, koska ajattelet asioita C++:ana. Sinun pitää vain unohtaa kokonaan, miten asiat tehtäisiin C++:lla, ja miettiä koko homma Javana. Käyttäen aikaisempaa esimerkkiäni, ei siis pidä miettiä "Miten voin tallentaa tietoa rekisteriin linuxissa?", vaan kysymystä "Miten tiedon tallentaminen kuuluu tehdä Linuxissa?". Toisena esimerkkinä voisi käyttää tätä:
Code: Select all
(format t "~d" (loop for i from 1 to 100 summing i))
Tuo summaa luvut yhdestä sataan ja tulostaa summan. Lisp-ohjelmoija kun joutuu tekemään saman C++:lla, hänhän huomaa heti, että eihän for-looppia voi käyttää inlinenä, ja siitä ei voi palauttaa tulosta. Mihin sitä siis muka voi käyttää!?
En tiedä, että mihin olet yrittänyt javan generiikkoja käyttää, mutta melkein löisin vetoa, että saman tuloksen saat aikaan Javallakin, kun vain ajattelet asian Javana. Se kyseinen tapaus voi olla monimutkaisempi tehdä Javalla, mutta ainahan ei voi voittaa. Java sopii toisiin asioihin paremmin ja C++ toisiin.