22. november 2007 - 12:02Der er
2 kommentarer og 1 løsning
Java interfaces - hvorfor kun public metoder?
Hejsa, et spørgsmål vedrørende java-interfaces.
Jeg arbejder med en større java application, hvor jeg har delt de forskellige dele op i packages.
mit application-layer bruger bl.a. objekterne i mit modellayer.
i modellayer har jeg defineret et interface der beskriver hvilke metoder objekterne i den package skal tilbyde udaftil...de skal naturligvis være public. i modellayer vil jeg også gerne definere et interface som beskriver hvilke metoder objekterne skal tilbyde internt i pakken, altså metoder der ikke kan tilgås udefra! det er straks sværere da man ikke kan lade være med at angive access modifier (som er package visibility) på de metoder der er defineret i dette interface! dvs.man kan godt compilere interfacet med metoder uden access modifier, men ikke de objekter der implementerer interfacet.
public class someObject implements I_packageInternal, etc { void doSomething() { } }
Java-teorien siger også at det ikke kan lade sig gøre, så mit spørgsmål er simpelthen....hvorfor (?!) og er der en løsning? for det ville være meget nyttigt i mit tilfælde!
alle de objekter i modellayer som problemet vedrører arver fra en base-class. har løst det ved at definere de metoder som abstract og se bort fra interfaces.
Man kan ikke definere metoder private i et interface...kun public og abstract - udvikler under eclipse og det siger den i hvert fald til mig (jdk1.5.0_5). Man kan som sagt også lade være med at skrive en access mod, hvorved den så skulle blive default access (dvs. package visibility)... det virker dog ikke, da man så får fejl når man vil implementere metoden med default visibility.
Har som sagt løst det ved at droppe det interface og gøre metoderne abstract i base-objektet i stedet for
Synes godt om
Ny brugerNybegynder
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.