![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() Ich übergebe an mein Java-Programm im Konstruktor Variablen, speichere diese global ab (beim System.out.println kennt er die Werte ja auch noch), aber bei der nächsten Verwendung (oder beim Aufruf von Außen) sind sie null!
Kann mir einer erklären, was hier los ist? Codeschnipsel: DB-Manager Code:
public class MyDataBaseManager { public String user, password, dbdriver, jdbcurl, lastquery,lasterror; private Statement st; private ResultSet rs; private ResultSetMetaData rsmd; private Connection con; private int scroll, concur; /** * Creates a new instance of MyDataBaseManager */ public MyDataBaseManager(String dbdriver, String jdbcurl){ System.out.println("1. Konstruktor: " + dbdriver + jdbcurl); new MyDataBaseManager("","", dbdriver, jdbcurl); } public MyDataBaseManager(String user, String password, String dbdriver, String jdbcurl) { this.user = user; this.password = password; this.dbdriver = dbdriver; this.jdbcurl = jdbcurl; this.scroll = ResultSet.TYPE_FORWARD_ONLY; this.concur = ResultSet.CONCUR_READ_ONLY; System.out.println(this.dbdriver+this.jdbcurl); } ... Code:
public class SQLclient extends javax.swing.JFrame { private MyDataBaseManager mydbm; private JTextField []fields; /** Creates new form SQLclient */ public SQLclient() { mydbm = new MyDataBaseManager("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:test1"); System.out.println(mydbm.dbdriver + " " + mydbm.jdbcurl); initComponents(); } ... Code:
init: deps-jar: compile-single: run-single: 1. Konstruktor: sun.jdbc.odbc.JdbcOdbcDriverjdbc:odbc:test1 sun.jdbc.odbc.JdbcOdbcDriverjdbc:odbc:test1 null null |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() imho stimmt das nicht:
public MyDataBaseManager(String dbdriver, String jdbcurl){ System.out.println("1. Konstruktor: " + dbdriver + jdbcurl); new MyDataBaseManager("","", dbdriver, jdbcurl); } Du solltest nur den Zweitkonstruktor aufrufen, dh. des new macht keinen Sinn. Damit würdest du nämlich eine neue Klasseninstanz (die du keiner Variable zuweißt) erstellen. public MyDataBaseManager(String dbdriver, String jdbcurl){ System.out.println("1. Konstruktor: " + dbdriver + jdbcurl); MyDataBaseManager("","", dbdriver, jdbcurl); } Zum Testen kannst ja ansonsten auch mal die Klasse mit dem zweiten Konstruktor aufrufen. mfg Thomas |
![]() |
![]() |
![]() |
#3 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() Ok, erste Konstruktor eliminiert, damit funktionierts.
Verstehen tu ichs trotzdem nicht... Danke! |
![]() |
![]() |
![]() |
#4 |
Quantensingularität
![]() |
![]() Du hast im ersten Konstruktur eine weitere Insatz der Klasse erzeugt die nicht zugewiesen wird, deine ursprüngliche Klasse wurde aber nicht initialisiert.
____________________________________
Was ist klein, grün und dreieckig? Ein kleines grünes Dreieck! Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg! |
![]() |
![]() |
![]() |
#5 |
Elite
![]() |
![]() Code:
/** * Creates a new instance of MyDataBaseManager */ public MyDataBaseManager(String dbdriver, String jdbcurl){ this("","", dbdriver, jdbcurl); System.out.println("1. Konstruktor: " + dbdriver + jdbcurl); }
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#6 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() danke, bin schon etwas vertrottelt!
das hat man von zu viel Sun Lernprogrammen... |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|