Ik zal het even uitleggen met een voorbeeldje.
Ik verstuur via het netwerk objecten van een bepaald type, Tuple. Dit kunnen instanties van Tuple zelf zijn, of instanties van subklassen. De ontvangende kant ontvangt deze als zijnde Tuple; het precieze type doet er niet toe.
Je zou denken dat de VM niet hoeft te weten dat het ontvangen object van type TupleSub (bv) is, alleen van type Tuple. Dus zou (in mijn ogen) de class file van TupleSub niet nodig moeten zijn. Hij heeft die echter wel nodig; zonder krijg je een ClassNotFoundException.
Dus zodra je tussen VM's gaat werken, dan verdwijnt juist het grote voordeel van supertypes en interfaces! De VM moet dan nml wel weten welk type het precies is.
Ik weet denk ik ook waardoor het komt: de definitie van een object ligt alleen opgeslagen in de betreffende class file. Niet alleen extra velden/methods (die in principe in dit geval onbelangrijk zijn), maar ook (en dit is wel belangrijk) de class name en supertype; de indentificatie van de class dus. Je zal ook nooit zonder deze kunnen.
Ik begrijp dus wel waarom het zo is, ik vind het alleen een beetje jammer.
Ben ik de enige die er zo over denkt?
(en kom alsjeblieft niet aan met URLClassLoaders etc, die ken ik al)
Ik verstuur via het netwerk objecten van een bepaald type, Tuple. Dit kunnen instanties van Tuple zelf zijn, of instanties van subklassen. De ontvangende kant ontvangt deze als zijnde Tuple; het precieze type doet er niet toe.
Je zou denken dat de VM niet hoeft te weten dat het ontvangen object van type TupleSub (bv) is, alleen van type Tuple. Dus zou (in mijn ogen) de class file van TupleSub niet nodig moeten zijn. Hij heeft die echter wel nodig; zonder krijg je een ClassNotFoundException.
Dus zodra je tussen VM's gaat werken, dan verdwijnt juist het grote voordeel van supertypes en interfaces! De VM moet dan nml wel weten welk type het precies is.
Ik weet denk ik ook waardoor het komt: de definitie van een object ligt alleen opgeslagen in de betreffende class file. Niet alleen extra velden/methods (die in principe in dit geval onbelangrijk zijn), maar ook (en dit is wel belangrijk) de class name en supertype; de indentificatie van de class dus. Je zal ook nooit zonder deze kunnen.
Ik begrijp dus wel waarom het zo is, ik vind het alleen een beetje jammer.
Ben ik de enige die er zo over denkt?
(en kom alsjeblieft niet aan met URLClassLoaders etc, die ken ik al)
More than meets the eye
There is no I in TEAM... but there is ME
system specs