mamamia Geschrieben 1. November 2002 Geschrieben 1. November 2002 hallo.. ich will meine classen dynamisch vererben.. dazu erzeuge ich ein newInsance Object.. try { Class c = Class.forName("package.Classe"); Object o = c.newInstance(); } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } catch (IllegalAccessException e) { } [/PHP] o ist Instanciert.. das funzt.. will ich jetzt aber o an meine ander Methode die mit [PHP] andereMethode anMeth = new andereMethode(this,true,o); übergeben dann bekomme ich einen fehler: package/Menue.java [123:1] cannot resolve symbol symbol : constructor andereMethode (package.Menue,boolean,java.lang.Object) location: class package.andereMethode andereMethode anMeth = new andereMethode(this,true,o); ^ 1 error [/PHP] andereMethode steht so im konstrucktor:[PHP] public andereMethode(java.awt.Frame parent, boolean modal, Stamm Stadat) { } schreibe ich aber andereMethode anMeth = new andereMethode(this,true,new Classe()); [/PHP] dann geht das.. noch was zu Stamm Stamm wird folgendermaßen instanziert:[PHP] public abstract class Stamm { ... variablen ... public Stamm() { } } wie übergebe ich nun dynamisch eine classe an andereMethode???
bigredeyes Geschrieben 3. November 2002 Geschrieben 3. November 2002 Zitat Originally posted by mamamia hallo.. ich will meine classen dynamisch vererben.. dazu erzeuge ich ein newInsance Object.. try { Class c = Class.forName("package.Classe"); Object o = c.newInstance(); } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } catch (IllegalAccessException e) { } [/PHP] [/b] anstatt Object o lieber Stamm o. oder nich? bigredeyes
hart Geschrieben 3. November 2002 Geschrieben 3. November 2002 @bigredeyes: Zitat anstatt Object o lieber Stamm o. oder nich? Nein, newInstance() liefert ein Object. @mamamia Was willst Du genau machen? Eine Klasse dynamisch laden und davon eine bekannte Methode aufrufen? Wenn ja, hier ein Beispiel: import java.lang.reflect.*; [...] public Object callMethod (URLClassLoader urlClassLoader, String className, String methodenName, Object[] parameter) throws Throwable { Class RunMe = urlClassLoader.loadClass(className); // Create a new instance Object o = RunMe.newInstance(); Class[] parameterTypen = new Class[parameter.length]; // Parametertypen werden zum Auffinden der Methode benötigt: for (int i = 0; i < parameterTypen.length; i++) { parameterTypen[i] = parameter[i].getClass(); } Method methode = null; try { methode = RunMe.getDeclaredMethod(methodenName, parameterTypen); } catch (Exception ex) { Logger.add(this.getClass(), ex); return null; } try { return methode.invoke(o, parameter); } catch (Exception ex) { Logger.add(this.getClass(), ex); } return null; }
fmarx2000 Geschrieben 4. November 2002 Geschrieben 4. November 2002 Zitat Originally posted by mamamia hallo.. ich will meine classen dynamisch vererben.. dazu erzeuge ich ein newInsance Object.. try { Class c = Class.forName("package.Classe"); Object o = c.newInstance(); } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } catch (IllegalAccessException e) { } [/PHP] o ist Instanciert.. das funzt.. will ich jetzt aber o an meine ander Methode die mit [PHP] andereMethode anMeth = new andereMethode(this,true,o); übergeben dann bekomme ich einen fehler: package/Menue.java [123:1] cannot resolve symbol symbol : constructor andereMethode (package.Menue,boolean,java.lang.Object) location: class package.andereMethode andereMethode anMeth = new andereMethode(this,true,o); ^ 1 error [/PHP] andereMethode steht so im konstrucktor: [PHP] public andereMethode(java.awt.Frame parent, boolean modal, Stamm Stadat) { } schreibe ich aber andereMethode anMeth = new andereMethode(this,true,new Classe()); [/PHP] dann geht das.. noch was zu Stamm Stamm wird folgendermaßen instanziert: [PHP] public abstract class Stamm { ... variablen ... public Stamm() { } } wie übergebe ich nun dynamisch eine classe an andereMethode??? Hmmm eine Instanz der Klasse "Classe" hast du ja. Warum macht du dann nicht einfach einen cast nach Classe, weil das steckt ja letztendlich in Object o drin , wie ich das verstehe. Des weiteren kannst du keine Instanzen von Stamm erzeugen, da "Stamm" abstrakt ist und es können keine Instanzen von abstrakten Klassen erzeugt werden. Es ist des weiteren kein Konstruktor der Form: andereMethode( ... , ... , Classe definiert) deswegen geht das auch nicht. Was bedeutet dynamisch vererben, das höre ist zum erstenmal. Du willst du dynamisch anhand des vollqualifizierten Klassennamens laden. Ich würde vorschlagen du liest mal etwas länger in "Java in a Nutshell" und überlegst was du wirklich willst und sortiert erstmal deine Gedanken. Frank
fmarx2000 Geschrieben 4. November 2002 Geschrieben 4. November 2002 Zitat Originally posted by mamamia hallo.. ich will meine classen dynamisch vererben.. dazu erzeuge ich ein newInsance Object.. try { Class c = Class.forName("package.Classe"); Object o = c.newInstance(); } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } catch (IllegalAccessException e) { } [/PHP] o ist Instanciert.. das funzt.. will ich jetzt aber o an meine ander Methode die mit [PHP] andereMethode anMeth = new andereMethode(this,true,o); übergeben dann bekomme ich einen fehler: package/Menue.java [123:1] cannot resolve symbol symbol : constructor andereMethode (package.Menue,boolean,java.lang.Object) location: class package.andereMethode andereMethode anMeth = new andereMethode(this,true,o); ^ 1 error [/PHP] andereMethode steht so im konstrucktor: [PHP] public andereMethode(java.awt.Frame parent, boolean modal, Stamm Stadat) { } schreibe ich aber andereMethode anMeth = new andereMethode(this,true,new Classe()); [/PHP] dann geht das.. noch was zu Stamm Stamm wird folgendermaßen instanziert: [PHP] public abstract class Stamm { ... variablen ... public Stamm() { } } wie übergebe ich nun dynamisch eine classe an andereMethode??? Der Compiler sagt dir doch auch den Fehler: andereMethode - Konstruktor ist so definiert: public andereMethode(java.awt.Frame parent, boolean modal, Stamm Stadat) du übergibst aber als ersten Parameter für Parent ein "this" was laut Compiler vom Typ package.Menue ist und das kann er nicht auflösen ... jedenfalls sagt er das mal. Klingelt es jetzt ? Frank
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden