Oprettelse af en instans ved at bruge klassens navn og kalde konstruktøren
Er der en måde at oprette en instans af en bestemt klasse på, hvis man angiver klassens navn (dynamisk) og overfører parametre til dens konstruktør.
Noget i stil med:
Object object = createInstance("mypackage.MyClass","MyAttributeValue");
Hvor "MyAttributeValue"
er et argument til konstruktøren af MyClass
.
298
3
Ja, noget i retning af:
Det virker selvfølgelig kun for en enkelt strengparameter, men du kan ændre det ret nemt.
Bemærk, at klassens navn skal være fuldt kvalificeret, dvs. inklusive namespace. For indlejrede klasser skal du bruge en dollar (da det er det, som compileren bruger). For eksempel:
For at få objektet
Class
til dette, skal du brugeClass.forName("foo.Outer$Nested")
.Du kan bruge
Class.forName()
til at få etClass
objekt af den ønskede klasse.Brug derefter
getConstructor()
til at finde det ønskedeConstructor
-objekt.Til sidst kalder du
newInstance()
på dette objekt for at få din nye instans.Du kan bruge refleksioner