{Java} Virtuele packages

Naar aanleiding van me recenste concept om methodes toe te voegen aan classes waarvan je de source code niet hebt, heb ik een nieuw concept uitgedacht omdat er een probleem was met packages. Klassen zitten in packages (ook wel namespaces genoemd). De Object class zit in de package java.lang. Wanneer we een methode toevoegen moet deze class ook in de package komen en hier komt het probleem. Als je twee dezelfde klasses in een package stopt, krijg je problemen. Zowel met de compiler als voor de programmeur zelf, hij weet niet meer wat zijn code was en de originele. Daarom introduceer ik het concept virtuele packages. Je maakt een nieuwe package aan met dezelfde naam van het originele package maar je zegt dat het een virtuele package is. Dan weet je dat hierin classes bevinden die jij geschreven hebt die de originele classes uitbreidt (extend).

virtual package java.lang;

class Object extends Object

{

public String toString()

{

return this.getClass().getName();

}

}

Wanneer een child dan import java.lang.*; gebruikt, zal hij eerst de originele classes inladen en dan pas de classes in de virtuele overschrijven met de originele. Zo moet de child geen nieuwe import schrijven en kan met naar hartelust bestaande classes in binaire vorm naar hartelust uitbreiden of verbeteren.

5 Responses to {Java} Virtuele packages

  1. PieterC zegt:

    Dit heeft niets met je post te maken hoor, maar ben je nu weeral van layout veranderd? :-)

  2. stijn1989 zegt:

    @PieterC: ik wissel van af en toe van layout tot ik de goeie heb gevonden :) Deze lijkt me wel ok. De vorige layout toonde de code fragmentjes niet goed.

  3. Ibrahim zegt:

    En deze toont de code wel goed :s ?

    Ik vind het een leuk idee, maar hoezo classen toevoegen zonder dat je de source niet hebt. Je hebt altijd toegang tot de source als je het gebruikt :)

  4. stijn1989 zegt:

    @Ibrahim: je snapt het niet. De classes die in de standaard java librarie zitten, zijn gecompiled tot bytecode. Je kan de source hiervan niet terughalen tenzij je bytecode kan lezen of Sun released the source code. Maar dit geld ook voor externe libraries die universiteiten of dergelijke releasen.

  5. Ibrahim zegt:

    Ah oke, dan snap ik het wel. Het is dus hetzelfde principe als de prototype functie van JavaScript.

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit / Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit / Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit / Bijwerken )

Google+ photo

Je reageert onder je Google+ account. Log uit / Bijwerken )

Verbinden met %s

%d bloggers op de volgende wijze: