/
Forside
/
Teknologi
/
Udvikling
/
Java
/
Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Find en bruger
Stil et spørgsmål
Skriv et tip
Fortæl en ven
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
Java
#
Navn
Point
1
molokyle
3688
2
Klaudi
855
3
strarup
740
4
Forvirret
660
5
gøgeungen
500
6
Teil
373
7
Stouenberg
360
8
vnc
360
9
pmbruun
341
10
mccracken
320
Oprette et vilkårligt object...
Fra :
Jens Lykke Brandt
Dato :
13-01-01 18:42
Hejsa.
Dette virker fint: Jeg har en superklasse, som jeg opretter og afhængigt af
hvilke data der er i min database, så bliver den til en bestemt underklasse:
filterSuper dummy;
if ( resultSet.getString( 1 ).equals("SimpleReplace") ){
dummy = new SimpleReplace();
} else {
dummy = new Replace();
}
dummy.loadData( resultSet.getInt(2), connection );
str = dummy.applyFilter ( str );
Men det jeg gerne vil er noget i retning af følgende - så jeg undgår
if-sætningen (og derfor tilføje flere underklasser uden at skulle ind og
rode med if-sætningen):
filterSuper dummy;
dummy = new resultSet.getString( 1 )();
dummy.loadData( resultSet.getInt(2), connection );
str = dummy.applyFilter ( str );
En form for "eval" eller lignende...
Hvad skal jeg gøre?
Med venlig hilsen
Jens
Ulrik Magnusson (
13-01-2001
)
Kommentar
Fra :
Ulrik Magnusson
Dato :
13-01-01 19:38
> Dette virker fint: Jeg har en superklasse, som jeg opretter og afhængigt af
> hvilke data der er i min database, så bliver den til en bestemt underklasse:
> filterSuper dummy;
> if ( resultSet.getString( 1 ).equals("SimpleReplace") ){
> dummy = new SimpleReplace();
> } else {
> dummy = new Replace();
> }
> dummy.loadData( resultSet.getInt(2), connection );
> str = dummy.applyFilter ( str );
>
> Men det jeg gerne vil er noget i retning af følgende - så jeg undgår
> if-sætningen (og derfor tilføje flere underklasser uden at skulle ind og
> rode med if-sætningen):
Du kan evt. bruge reflection:
import java.lang.reflect.*;
public class Test
{
//Opretter enten et String eller et Object objekt og skriver klassenavnet ud
public static void main( String[] args ) throws Exception
{
String[] classNames = {"java.lang.String","java.lang.Object"};
int r = (int)(Math.random() * 2);
Class cl = Class.forName(classNames[r]);
Constructor constructor = cl.getConstructor(null);
Object obj = constructor.newInstance(null);
System.out.println(obj.getClass());
}
}
Læg dog mærke til at der er et væld af Exceptions der skal tages højde for.
null betyder at det er default konstruktoren (0 argumenter) man vil have fat i.
Ulrik Magnusson
Søg
Alle emner
Teknologi
Udvikling
Java
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177558
Tips :
31968
Nyheder :
719565
Indlæg :
6408929
Brugere :
218888
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2024 kandu.dk. Alle rettigheder forbeholdes.