Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Java] Functies globaal bereikbaar maken?

Pagina: 1
Acties:

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 00:04
Ik ben nog niet zo gek lang bezig met java. Ik probeer in mijn code iets in te brengen dat bepaalde functies globaal bereikbaar zijn. Maar ik heb werkelijk geen idee hoe en wat :$ . Het enige wat me tot zover lukt is functies binnen 1 class, maar meerdere classen moeten gebruik kunnen maken van 1 functie.

Wie kan mij hier verder mee op weg helpen?

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Je zou de functies static kunnen maken, dan zijn ze ten alle tijde beschikbaar:

public static String myFunction(String value) {
return value;
}

En dan kan je vervolgens zo de functie bereiken:

SomeClass.myFunction("test");

Let wel op dat je van SomeClass geen instantie hoeft te maken (dus geen new SomeClass().myFunction() ) omdat het een static is.

[ Voor 41% gewijzigd door ronaldmathies op 10-10-2007 14:03 ]

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
is er in java niet gewoon
public int integertje?

(zo niet, waarom dan eigenlijk niet :P C# e.d. heeft het wel, en dat is zelfde generatie / methodologie)
(zelfs VB5 (of eerder) had dit al iig :P )

~ Mijn prog blog!


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

therat10430 schreef op woensdag 10 oktober 2007 @ 14:22:
is er in java niet gewoon
public int integertje?

(zo niet, waarom dan eigenlijk niet :P C# e.d. heeft het wel, en dat is zelfde generatie / methodologie)
(zelfs VB5 (of eerder) had dit al iig :P )
Uiteraard heeft java dat, dat is wel erg basic. :p
Maar je variabelen public maken duidt meestal niet op het beste ontwerp. ;)

Methodes public maken lijkt de meest eenvoudige oplossing voor de TS. Een static methode (wat ronald zegt) kan ook een oplossing zijn.

@Keiichi: Heb je geen Java naslagwerk bij de hand? Altijd handig.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Een public class met een public method zou de truc moeten doen:

Java:
1
2
3
4
5
6
7
8
9
public class Utilities {
  public void utilityMethod() {
  // bladibla
  }
}

//Nu kun je in een willekeurige andere class dit doen:

new Utilities().utilityMethod();


Uiteraard kun je dit ook met een static method oplossen, dat voorkomt dat je instanties moet aanmaken.

With the light in our eyes, it's hard to see.


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Keiichi schreef op woensdag 10 oktober 2007 @ 14:00:
maar meerdere classen moeten gebruik kunnen maken van 1 functie.
Andere optie is natuurlijk overerving. Neem een goed OO boek en ga eens lezen :)

Do diamonds shine on the dark side of the moon :?


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 13:40

Robtimus

me Robtimus no like you

Bobco schreef op woensdag 10 oktober 2007 @ 14:39:
Een public class met een public method zou de truc moeten doen:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Utilities {
    private Utilities() {
        // geen instanties toegestaan! is toch alleen maar onzin
    }

    public static void utilityMethod() {
        // bladibla
    }
}

//Nu kun je in een willekeurige andere class dit doen:

Utilities.utilityMethod();

Beetje efficienter. Zodra een state nodig is moet je echter wel instances toestaan en gebruiken.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Oftewel, weten wat (onder andere) de public, protected, private en static keywords doen en waarvoor je ze nodig hebt is gewoon een must. :)

{signature}


  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Ik zou zeggen: ga eerst een inleidend boek over Java en OO programmeren bestuderen voordat je verder gaat. Je vraag is namelijk echt wel iets dat tot de benodigde basiskennis hoort.

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 00:04
Bobco schreef op woensdag 10 oktober 2007 @ 14:39:
Een public class met een public method zou de truc moeten doen:

Java:
1
2
3
4
5
6
7
8
9
public class Utilities {
  public void utilityMethod() {
  // bladibla
  }
}

//Nu kun je in een willekeurige andere class dit doen:

new Utilities().utilityMethod();


Uiteraard kun je dit ook met een static method oplossen, dat voorkomt dat je instanties moet aanmaken.
Dit lijkt me een goede oplossing d:)b

Als iemand mij weet te vertellen wat het ultieme java boek is?

Van al die webtutorials word je weinig wijzer van als ik nu ben eigenlijk -O-

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


Verwijderd

Probeer:
Absolute Java, 3rd Edition van Walter Savitch, en verder verwijzen we je naar [Alg] Centraal boekentopic - part II voor vragen over boeken, graag een beetje centraal :-)

Verwijderd

het ultime javaboek: www.google.com :D beetje flauw maar van google heb ik in de afgelopen jaren veel meer nuttige informatie en ebooks e.d. kunnen vinden over OO en java dan in de boekenwinkel. (plus ik ben geen fan van papieren boeken, leest niet lekker ;) )

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Op http://balusc.blogspot.com/2006/04/java-tutorial.html (ook gelinkt in de PRG FAQ) kun je een Nederlandstalige Java tutorial vinden :)

De oplossing van IceManX is het netst overigens, wanneer je gebruik wil maken van een 'utility method'.

[ Voor 12% gewijzigd door BalusC op 10-10-2007 21:05 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

BalusC schreef op woensdag 10 oktober 2007 @ 21:04:
De oplossing van IceManX is het netst overigens, wanneer je gebruik wil maken van een 'utility method'.
Als die classe toch alleen maar een container is van dergelijke methodes gebruikt kun hem hem net zo goed abstract maken natuurlijk, ben je meteen van die constructor af.

Do diamonds shine on the dark side of the moon :?


  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 29-11 18:34

Salandur

Software Engineer

Verwijderd schreef op woensdag 10 oktober 2007 @ 20:44:
het ultime javaboek: www.google.com :D beetje flauw maar van google heb ik in de afgelopen jaren veel meer nuttige informatie en ebooks e.d. kunnen vinden over OO en java dan in de boekenwinkel. (plus ik ben geen fan van papieren boeken, leest niet lekker ;) )
offtopic:
laat ik nou vnet vinden dat niets het haalt bij een papieren versie

Assumptions are the mother of all fuck ups | iRacing Profiel


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Als die classe toch alleen maar een container is van dergelijke methodes gebruikt kun hem hem net zo goed abstract maken natuurlijk, ben je meteen van die constructor af.
Sja, zo'n utilityklasse declareer ik technisch gezien eerder als 'final'. Dan is 'abstract' niet mogelijk.

[ Voor 46% gewijzigd door BalusC op 10-10-2007 21:20 . Reden: quote added ]


  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 28-11 18:54
Gaat Java dan niet moeilijk doen als je een abstracte classe wilt gebruiken :?

Een site waar veel over java staat en wordt uitgelegd: www.java2s.com
Ook over de keywoorden staat een uitleg en bij sommige voorbeelden.

let the past be the past.


  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

En als static niet voldoet (b.v. toch state), dan kun je altijd nog naar het Singleton pattern kijken ...

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 13:40

Robtimus

me Robtimus no like you

SPee schreef op woensdag 10 oktober 2007 @ 21:25:
Gaat Java dan niet moeilijk doen als je een abstracte classe wilt gebruiken :?
Alleen als je de class wilt instantieren. En dat is dus juist niet de bedoeling ;)

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Keiichi schreef op woensdag 10 oktober 2007 @ 14:00:
Ik ben nog niet zo gek lang bezig met java. Ik probeer in mijn code iets in te brengen dat bepaalde functies globaal bereikbaar zijn. Maar ik heb werkelijk geen idee hoe en wat :$ . Het enige wat me tot zover lukt is functies binnen 1 class, maar meerdere classen moeten gebruik kunnen maken van 1 functie.

Wie kan mij hier verder mee op weg helpen?
Hoi Keiichi,

Even een reactie op je i5 topic omdat die op slot zit... Neem even contact met me op via e-mail, dan zal ik je haarfijn uitleggen hoe je aan zo'n kit komt 8)

  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 28-01 13:12

jAnO!

lalalavanillevla

Ik raad je van harte head first java van bates en sierra aan.

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
BalusC schreef op woensdag 10 oktober 2007 @ 21:19:
Sja, zo'n utilityklasse declareer ik technisch gezien eerder als 'final'. Dan is 'abstract' niet mogelijk.
Abstract nodigt uit tot overerving, final juist niet. In het geval van een utilityclass vind ik dat dan ook netter.

https://niels.nu


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Waarom zou je statische utilitymethoden willen kunnen overerven danwel overschrijven?

Verwijderd

De oplossing staat er nu wel lang en breed dus tijd voor het volgende zinnetje:
Keiichi schreef op woensdag 10 oktober 2007 @ 14:00:
Ik ben nog niet zo gek lang bezig met java.
Wat dus vrij vertaald betekent: Vergeet heel hard de bovenstaande opmerkingen over static methods en vergeet daarbij het Singleton pattern nog twee keer zoveel. In plaats daarvan is verstandig om eens te kijken welke instanties je door wilt geven aan andere classes.

------------------------------------
BalusC schreef op woensdag 24 oktober 2007 @ 12:11:
Waarom zou je statische utilitymethoden willen overschrijven?
Dat kan sowieso niet, je kunt ze hooguit schaduwen...

[ Voor 20% gewijzigd door Verwijderd op 24-10-2007 12:18 ]


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Oh, wat dom van mij.
Pagina: 1