objekt einer Klasse erstellen

Status
Nicht offen für weitere Antworten.

vodn7v

Bekanntes Mitglied
hallo ich möchte zur laufzeit ein objekt einer klasse erstellen.

ich übergebe einer methode den klassennamen (inkl. pfad) einer existierenden klasse. ich weiss halt vorher nicht welche es ist. davon möchte ich gerne ein objekt erstellen damit ich die methoden des klassenobjektes nutzen kann.

wie mach ich sowas am besten ??


danke !!
 

Landei

Top Contributor
Kommt drauf an. Hat die Klasse einen öffentlichen, argumentlosen Konstruktor hat, dann etwa so:
Code:
   try {
     Class<?> clazz = Class.forName("java.lang.Date");
     Object o = clazz.newInstance();
     System.out.println(o);
   } catch(Exception ex) {
     ex.printStackTrace(); 
   }
 

vodn7v

Bekanntes Mitglied
also ich erstelle mir so erstmal die struktur meiner klasse:

DBAccess newTableClass = null;
Object newObject = null;

Class c = Class.forName( className );
newObject = (Object) c.newInstance();

newTableClass = (com.test.class.DBAccess) newObject ;

jetzt soll das objekt der klasse die eigenschaften von der klasse DBAccess bekommen.
aber irgednwie hauzt das nicht so recht hin.
 
S

SlaterB

Gast
'irgednwie' ist dein Posting ungenau
-> die großen drei: Compilerfehler? Exception zur Laufzeit? oder welches andere Fehlverhalten?
 

vodn7v

Bekanntes Mitglied
hallo, ok es war vllt etwas ungenau.. hier nochmal mein code:

com.org.test.obclass.DBAccess newTableClass = null;
Object newObject = null;


Class c = null;
try {
c = Class.forName("com.log.lud.sql.IFC_test");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
newObject = (Object) c.newInstance();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

newTableClass = (com.org.test.obclass.DBAccess) newObject;


Compilierfehler keine, gar keine fehler eigentlich =) ich kann halt nicht die funktionen der klasse DBAccess auf dem objekt meiner instanziierten klasse anwenden.

das ist das problem =)
 
S

SlaterB

Gast
'kann halt nicht die funktionen [..] anwenden'
ist keine korrekte Fehlerbeschreibung,

kommt jedes Mal, wenn du das tust, ein FBI-Mann zur Tür herein und nimmt dir die Tastatur weg?
oder reagiert das Programm in IRGENDEINER WEISE?

dann beschreibe dies bitte mit Worten..

-------

hat com.log.lud.sql.IFC_test wirklich etwas mit com.org.test.obclass.DBAccess zu tun?
 
T

tuxedo

Gast
Das von dir instanziierte Objekt sollte von DBAccess geerbt haben, oder falls DBAccess ein Interface ist, sollte das Objekt dieses Interface implementiert haben. Nur dann kannst du erfolgreich nach DBAccess casten und die Methoden die DBAccess beschreibt nutzen.

- Alex
 

vodn7v

Bekanntes Mitglied
ok sorry,
also in der klasse DBAccess habe ich verschiedene Methoden, wie z.B. insert(), oder executeQuery(). die möchte ich gerne nutzen. und auf das objekt der klasse anwenden.

ich bekomme dieser aber gar nicht erst zur verfügung gestellt. würde gerne sowas machen:

com.org.test.obclass.DBAccess newTableClass = null;
Object newObject = null;


Class c = null;
try {
c = Class.forName("com.log.lud.sql.IFC_test");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
newObject = (Object) c.newInstance();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

newTableClass = (com.org.test.obclass.DBAccess) newObject;



dann: newTableClass.insert(irgendein datensatz);

aber die aufrufe werden mir nicht angezeigt. das meine ich damit =)
 
T

tuxedo

Gast
>> aber die aufrufe werden mir nicht angezeigt. das meine ich damit =)

Scheint eher was mit deiner IDE und der "autovervollständigung" zu tun haben ?!
Weil "werden mir nicht angezeigt" interessiert den Compiler erstmal nicht.

- Alex
 
S

SlaterB

Gast
und falles es nicht an der IDE liegt:
die Variable newTableClass ist vom Typ DBAccess, du siehst genau die Methoden, die DBAccess zur Verfügung stellt,
wenn insert nicht dabei ist, dann fehlt diese Methode in DBAccess?

poste diese Klasse/ Interface
 

vodn7v

Bekanntes Mitglied
ok das passt schonmal, die funktionen der DBAccess werden vererbt. das geht jetzt. hatte einen pfadfehler drin, obwohl er nicht gemeckert hat.. naja.

ein problem habe ich nocht. ich kann jetzt zwar die geerbten funktionen aus der DBAccess nutzen, jedoch nicht die der Klasse von der ich das Objekt erstellt habe.

also von der "com.log.lud.sql.IFC_test"

dort ist zb. diese methode enthalten:
-----------------
public boolean deleteByKey(int key) throws SQLException
{
boolean status= false;

if (connect())
{
// hier findet die SQL operation statt
}
return TGstatus;
}
------------------
sollte doch eigentlich gehen oder? pfad etc ist alles korrekt.

wenn ich aber "objekt.deleteByKey(zahl);"

angebe makiert er mir das als fehler, nicht vorhanden etc. automatisch angezeigt wird es auch nicht.
 

vodn7v

Bekanntes Mitglied
hmm.. das versteh ich jetzt nicht. ich dachte mein objekt wäre ein instanz der klasse "com.log.lud.sql.IFC_test" und hätte die eigenschaften von DBAssess geerbt. warum muss ich das objekt jetzt nochma nach "com.log.lud.sql.IFC_test" casten ??

danke
 
T

tuxedo

Gast
Weil du's beim Laden allgemein gehalten hast (Object) und dann lediglich nach DBAccess gecastet hast. Somit ist es als "DBAccess" bekannt. Wenn "IFC_test" von DBAccess erbt, kannst du einfach einmal nach IFC_test casten und schon hast du Zugriff auf alles in IFC_test und hast die Methoden aus DBAccess.

Kannst ja mal in der JavaInsel zum Thema "casten" nachschlagen. Dann wird dir einiges klarer.

- Alex
 

tfa

Top Contributor
Java ist statisch getypt. Wenn eine Variable vom Typ DBAccess ist, kannst du nur Methoden aufrufen, die in der Schnittstelle von DBAccess definiert sind. Das prüft schon der Compiler. Dabei ist völlig egal, von welcher Klasse das eigentlich Objekt in dieser Variable ist.
In dynamisch typisierten Sprachen ist das anders. Da gibt es keine Casts.
 

vodn7v

Bekanntes Mitglied
glaube mein problem ist, das ich den klassennamen nicht als pfad da habe sonder lediglich als string. das ganze sollte ja variable gehalten werden ?! oder hat das damit nichts zu tun ?

danke
 

vodn7v

Bekanntes Mitglied
klar.. casten kann ich es einfach



((IFC_test) newObject).executeQuery("");

dann kann ich auch auf die methoden zugreifen. problem ist einfach, das ich die Klasse vorher nicht kenne und den klassennamen als string zugewiesen kriege... und so funktioniert es ja nicht =)

(("IFC_test") newObject).executeQuery("");

oder hab ich da jetzt was falsch verstanden ??

danke euch !
 
S

SlaterB

Gast
dann bleibt dir einerseits nur der totale Reflection-Weg:
String cl = "IFC_test";
String method = "executeQuery";

getClass(cl).newInstance().callMethod(method); (grob)


-------

dass du die Klasse nicht kennst ist ja noch halbwegs verständlich, ansonsten könnte man sich alles sparen,
aber wenigstens die Methode sollte in einem Interface vorgegeben sein,


public interface Executer {
public void executeQuery(String query);
}

wenn dann IFC_test dieses Interface implementiert, kannst du
Executer ex = (Executer) newObject;
ex.executeQuery("");
schreiben

aber das ist ja alles wie bei DBAccess, sollte eigentlich bekannt sein...
 

vodn7v

Bekanntes Mitglied
leider implementiert die klasse kein interface .. also alles von hand. die methodenaufrufe sollten aber immer gleich sein. das würde dann schonmal gehen.

c = Class.forName("com.log.lud.sql.IFC_test");

newObject = (Object) c.newInstance();

c.getMethod( "executeQuery" ).invoke( newObject );

so würde es gehen, jedoch meine frage jetzt: wie kann ich der methode parameter mitgeben ?
puh, das es so umständlich wird hätte ich nicht gedacht =)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
M Objekt einer Klasse speichert die Veränderung nicht Java Basics - Anfänger-Themen 1
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
S Objekt einer Klasse OnClick Java Basics - Anfänger-Themen 5
N Objekt in Methode einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
K Objekt einer Klasse weitergeben Java Basics - Anfänger-Themen 1
E Methoden Auf Methoden einer Klasse zugreifen, ohne ein Objekt zu erstellen Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
E Attribute von einem Objekt einer anderen Klasse ändern Java Basics - Anfänger-Themen 4
X Objekt in einer Klasse aufrufen Java Basics - Anfänger-Themen 13
P Kapselung Variable innerhalb einer inneren Klasse ansprechen ohne ein Objekt erzeugen zu müssen? Java Basics - Anfänger-Themen 6
K Klassen Objekt mit einem Namen von einer bestimmten Klasse instanziieren Java Basics - Anfänger-Themen 10
B Klassen über Main Klasse in einer anderen Klasse ein Objekt erstellen Java Basics - Anfänger-Themen 5
S OOP Auf ein Objekt von einer anderern Klasse zugreifen Java Basics - Anfänger-Themen 3
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
L auslesen einer Variablen eines Objekt welches "Eigentum" eines Objektes der selben Klasse ist. Java Basics - Anfänger-Themen 12
I Einzelnes Objekt einer Klasse bekommen Java Basics - Anfänger-Themen 9
Z objekt erstellen von canonical name einer klasse Java Basics - Anfänger-Themen 6
G Methodenaufruf über ein Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Prüfen, ob Objekt von einer Klasse ist Java Basics - Anfänger-Themen 3
G Objekt öffnen von einer anderen Klasse öffnen Java Basics - Anfänger-Themen 6
D Objekt der Methode einer anderen Klasse zuordnen Java Basics - Anfänger-Themen 6
G Problem bei der Angabe von Attributen in einer Objekt-Klasse Java Basics - Anfänger-Themen 3
J Attribut vom Objekt einer eigenen Klasse setzen Java Basics - Anfänger-Themen 6
S Variabler Name für ein Objekt einer Klasse? Java Basics - Anfänger-Themen 10
M objekt (linkedList) zugriff aus einer anderen klasse Java Basics - Anfänger-Themen 3
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
L Klassen Objekt aus einer Warteschlange in eine andere übergeben, geht nicht? Java Basics - Anfänger-Themen 6
r4w Eigenschaften aus Objekt einer Liste holen Java Basics - Anfänger-Themen 3
T Objekt-Arrays mit einer Schleife durchlaufen/ausgeben Java Basics - Anfänger-Themen 2
Arif Collections Unkonstruiertes Objekt einer Collection hinzufügen Java Basics - Anfänger-Themen 2
C Bestimmtes Objekt einer ArrayList in einer Methode selektieren Java Basics - Anfänger-Themen 8
P Klassen In einer Autoklasse das Objekt Auto mittels Collection Speichern Java Basics - Anfänger-Themen 4
W Objekt einer Unterklasse erstellen Java Basics - Anfänger-Themen 4
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
N Objekt in einer Liste finden? Java Basics - Anfänger-Themen 3
T Von einer Methode zurückgegebenes Objekt in einer ArrayList ansprechen Java Basics - Anfänger-Themen 5
Z Greenfoot Variable in einer Datei und nicht in einem Objekt/World speichern Java Basics - Anfänger-Themen 1
A Greenfoot - Objekt im Vordergrund lassen, bei einer scrollbaren Welt ohne zentrierten Actor Java Basics - Anfänger-Themen 3
J OOP Vergebene Objekt Nummer abgleichen falls einer entfernt wird ? Java Basics - Anfänger-Themen 5
L Aus einer String Variablen ein Objekt erstellen Java Basics - Anfänger-Themen 14
C Ein Objekt in einer Zeile ausgeben Java Basics - Anfänger-Themen 31
D Fehlen einer Referenz auf Objekt Java Basics - Anfänger-Themen 14
E Ein Objekt von zwei möglichen Klassen in einer Variable Java Basics - Anfänger-Themen 5
philipp Auf Objekt einer ArrayList zugreifen Java Basics - Anfänger-Themen 2
M Der Umgang mit Iterator - Wie ein Objekt aus einer ArrayList Java Basics - Anfänger-Themen 2
B Sortieren von Objekt Arrays nach einer Instanz Java Basics - Anfänger-Themen 8
C Objekt soll sich selber einer Variablen zuweisen. Java Basics - Anfänger-Themen 6
G objekt aus einer .class datei Java Basics - Anfänger-Themen 16
F Aktualisieren einer Liste von einem entfernten Objekt aus. Java Basics - Anfänger-Themen 11
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
B Objekt in Klassendiagramm an fremdes Objekt weiterreichen? Java Basics - Anfänger-Themen 6
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
amelie123456 Objekt Farbe Quellcode Java Basics - Anfänger-Themen 4
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
melaniemueller Fernseher als Objekt Java Basics - Anfänger-Themen 9
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
S JavaFX - Objekt an neue Stage übergeben Java Basics - Anfänger-Themen 12
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
S Aufzurufendes Objekt Java Basics - Anfänger-Themen 3
CptK Überprüfen ob übergebenes Objekt zu Generics passt Java Basics - Anfänger-Themen 2
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56

Ähnliche Java Themen

Neue Themen


Oben