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??? Zitieren
bigredeyes Geschrieben 3. November 2002 Geschrieben 3. November 2002 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 Zitieren
hart Geschrieben 3. November 2002 Geschrieben 3. November 2002 @bigredeyes: 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; } Zitieren
fmarx2000 Geschrieben 4. November 2002 Geschrieben 4. November 2002 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 Zitieren
fmarx2000 Geschrieben 4. November 2002 Geschrieben 4. November 2002 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.