Toon posts:

[java] Class.forName()

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een factory klasse aan't maken waarin dynamisch een klasse wordt geladen (om deze in de interface in te pluggen).
Nu krijg ik al een compiler fout bij mijn code:
code:
1
2
3
reduction=(ReductionIF)Class.forName("").getInstance();
//zelfs deze code geeft hij compiler fout
Class t = Class.forName("java.lang.Thread");


De exception die wordt gethrowd in beide gevallen is ClassNotFoundException.
Ik dat het just de bedoeling was dat die pas @runtime werd gegooid?

Nu ik moet er wel bijzeggen dat ik op dit moment werk met een nieuwe IDE (IntelliJ IDEA) en dat deze volgens mij compiled @ design time (mijn regel wordt rood onmiddelijk). Hij geeft ook een fout in IDE direct op tweede lijn, wat ik dan héél raar vind!

Verwijderd

Verwijderd schreef op 11 december 2003 @ 08:31:
Ik ben een factory klasse aan't maken waarin dynamisch een klasse wordt geladen (om deze in de interface in te pluggen).
Nu krijg ik al een compiler fout bij mijn code:
Java:
1
2
3
4
// wat zou dit precies moeten doen???? 
reduction=(ReductionIF)Class.forName("").getInstance();
//zelfs deze code geeft hij compiler fout
Class t = Class.forName("java.lang.Thread");


De exception die wordt gethrowd in beide gevallen is ClassNotFoundException.
Ik dat het just de bedoeling was dat die pas @runtime werd gegooid?
Uiteraard. Jij wilt pas at runtime bepalen welke klasse geladen moet worden. Dus weet je progje ook dan pas of die klasse er wel of niet staat.
Nu ik moet er wel bijzeggen dat ik op dit moment werk met een nieuwe IDE (IntelliJ IDEA) en dat deze volgens mij compiled @ design time (mijn regel wordt rood onmiddelijk). Hij geeft ook een fout in IDE direct op tweede lijn, wat ik dan héél raar vind!
Heb je er een try/catch block omheen? Die ClassNotFoundException moet je afhandelen of throwen uiteraard. Als dat het niet is moet je iets meer code laten zien...

eneuh...

Java:
1
2
3
reduction=(ReductionIF)Class.forName("").getInstance();
// moet vast zijn
reduction=(ReductionIF)Class.forName("path.to.ReductionIF").newInstance();

[ Voor 16% gewijzigd door Verwijderd op 11-12-2003 08:58 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik denk dat de Exception nog niet gethrowed word. Ik denk inderdaad dat je Ontwikkel Omgeving vast een melding geeft dat het straks niet gaat compilen omdat je je Exception niet afvangt. Als je er een Try Catch block omheenzet zal je IDE de fout niet meer geven. Zorg er wel voor dat je je fout netjes afhandeld.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”