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

[Java]Maak Object object van Class object

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey gasten,

Ik heb een nogal on-Google-baar probleem. Ik heb een aantal subclasses van een abstracte base class. Laten we zeggen:

Java:
1
2
3
public abstract class Thing {}
public class ThisThing extends Thing {}
public class ThatThing extends Thing {}


In een lijst met regels geef ik in de vorm van Class-objecten aan welke subclasses ik wil aanmaken:

Java:
1
2
3
4
5
6
7
Class[] classes = {
    ThisThing.getClass(),
    ThatThing.getClass(),
    ThisThing.getClass(),
    ThisThing.getClass(),
    ThatThing.getClass()
}


Nu wil ik op de een of andere manier een lijst met objecten maken van de types die in de lijst met classes wordt aangegeven. Dit is heel lastig te Googlen, omdat je dan search-strings krijgt van het type: "create Object object from Class object java".

Heeft iemand een idee?

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Bedoel je dit?

  • Standeman
  • Registratie: November 2000
  • Laatst online: 13:35

Standeman

Prutser 1e klasse

Ik snap even niet wat je wilt bereiken. Je wil "on the fly" classes instantieren ofzo? Er beginnen in iedergeval bij mij al een aantal belletjes te rinkelen waarbij ik vermoed dat je een niet-zo-handige oplossing aan het bedenken bent.
Misschien is het handig als je je post wat uitbreid met wat extra informatie zodat het probleem gebied wat duidelijker wordt.

Wat bedoel je met regels in "een lijst met regels". Gewoon een array?

[ Voor 17% gewijzigd door Standeman op 07-05-2008 13:54 ]

The ships hung in the sky in much the same way that bricks don’t.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:40

Creepy

Tactical Espionage Splatterer

Als je een class name hebt kun je Class.forName() een Class terugkrijgen die je met newInstance() kan instantieren.
Edit: wat Face_-_LeSS ook al zegt dus.

[ Voor 42% gewijzigd door Creepy op 07-05-2008 14:01 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Uhm, ja dat is het inderdaad. :$ Het was niet eens in me opgekomen om in de API te gaan zoeken. Sorry voor de noise. Bedankt voor het snelle antwoord in ieder geval! :)

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Dan nog moet je weten waar op je moet zoeken want met "create Object object from Class object java" ga je het niet vinden denk ik :9

Wat je wilt heet: Dynamic Class Instantiation

Verwijderd

Ik heb geen idee wat je wil bouwen, maar misschien moet je ook eens kijken naar Dependency Injection frameworks (Inversion of Control)? Of Factory Patterns?

Verwijderd

Topicstarter
Nou, ik heb als base class Message, met als subclasses verschillende types berichten (Sms, Email, Popup, etc), die vanzelfsprekend verschillende data en behaviour bevatten.

Ik heb bepaalde data in een lijst van MessageRules (opgeslagen via de Preferences API), die aangeeft of, en hoe berichten verstuurd moeten worden (dit is generiek voor alle messages). Zo'n MessageRule bevat in ieder geval een conversie-type (stel je wilt een sms krijgen dat je een e-mail hebt ontvangen). Dat is bij mij dus een Class van één van de subclasses van Message. Ik gebruikte de Class, omdat dat de manier was om de class-naam van een object te converteren naar een String, om het in de Preferences op te kunnen slaan. Ik moest alleen nog terug van String naar object. ;)

Ook moet ik op basis van informatie uit de concrete berichten een bepaald Message hebben. Hier komt die factory pattern waarschijnlijk inderdaad van pas. Dit heeft echter weinig met mijn (al opgeloste) probleem te maken.

Edit:
Dat Dependency Injection ziet er ook wel interessant uit, maar voor mijn simpele gebruik zal het de boel waarschijnlijk alleen maar ingewikkelder maken.

[ Voor 7% gewijzigd door Verwijderd op 07-05-2008 17:33 ]


Verwijderd

Even snel een korte reactie:
Google Guice. Zelf geen ervaring mee, maar het schijnt er light weight te zijn en ik hoor er veel positieve dingen over. Misschien dat het PDF'je User's Guide sowieso de moeite waard is om te bekijken.

[ Voor 3% gewijzigd door Verwijderd op 07-05-2008 18:56 ]

Pagina: 1