Wie finde ich die konkrete Implementierung?

Status
Nicht offen für weitere Antworten.

Verjigorm

Top Contributor
Hallo, ich habe da mal eine Frage:

Als kleines Beispiel mal:
Java:
PreparedStatement stmt = connection.prepareStatement(sql);
...
System.out.println(stmt.toString());

Ich habe hier bewusst mal toString() geschrieben.
Ich würde gerne wissen, wie diese toString()-Methode konkret implementiert ist?
Wie komme ich (in Eclipse) zu dieser Implementierung?
Beim Klicken auf die Methode wird man immer zu Object.toString() geleitet.
Wie macht man das?
Vielelicht eine Anfängerfrage, aber ich bin grad irgendwie überfragt.

mfg Verjigorm
 
S

SlaterB

Gast
System.out.println(stmt.getClass());

dann die entsprechende Klasse öfften (Strg-Shift-T in Eclipse) und da die Methode suchen, falls sie überhaupt überschrieben wurde,
ansonsten in den Oberklassen, was bisschen aufwendig werden könnte,

einfacher ist es gegebenenfalls zu casten,
wenn du z.B. herausgefunden hast, dass die Klasse in diesem Fall JDBCFastPreparedStatement heißt, dann schreibe
JDBCFastPreparedStatement x = (JDBCFastPreparedStatement) stmt;
x.toString();
und klicke nun auf die Methode, dann sucht Eclipse die tiefste Implementierung raus, je nach Vererbung

Pech hast du, wenn die Klasse nicht public ist, dann funktioniert dieser Trick nicht so gut
 

ARadauer

Top Contributor
schlechtes Beispiel... da PreparedStament ein Interface ist ;-)

Was benutzt du für einen Datenbanktreiber?

setzt dir mal dort einen Breakpoint und schau dir die Variable genauer im Debugger an? Was ist das für eine Klasse? Bei mir zb ist es im Moment oracle.jdbc.driver.T4CPreparedStatement..

ich denk aber nicht, das oracle mir hier den Code liefert ;-)
 
Zuletzt bearbeitet:

Verjigorm

Top Contributor
Ok, ich habe schon gedacht, ich blamiere mich mit dieser "leichten" Frage, aber es ist doch komplizierter, als ich dachte :D

In meinem Fall ist es
com.mysql.jdbc.JDBC4PreparedStatement

Jetzt brauche ich nur noch den Source von dem Treiber :D (hoffe ich)

Danke schonmal
 

ARadauer

Top Contributor
Java:
/*
 Copyright  2002-2007 MySQL AB, 2008 Sun Microsystems

 This program is free software; you can redistribute it and/or modify
 it under the terms of version 2 of the GNU General Public License as 
 published by the Free Software Foundation.

 There are special exceptions to the terms and conditions of the GPL 
 as it is applied to this software. View the full text of the 
 exception in file EXCEPTIONS-CONNECTOR-J in the directory of this 
 software distribution.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 */

package com.mysql.jdbc;

import java.io.InputStream;
import java.io.Reader;
import java.sql.NClob;
import java.sql.RowId;
import java.sql.SQLXML;
import java.sql.SQLException;
import java.sql.Types;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.PreparedStatement.ParseInfo;


public class JDBC4PreparedStatement extends PreparedStatement {

	public JDBC4PreparedStatement(ConnectionImpl conn, String catalog) throws SQLException {
		super(conn, catalog);
	}
	
	public JDBC4PreparedStatement(ConnectionImpl conn, String sql, String catalog)
		throws SQLException {
		super(conn, sql, catalog);
	}
	
	public JDBC4PreparedStatement(ConnectionImpl conn, String sql, String catalog,
			ParseInfo cachedParseInfo) throws SQLException {
		super(conn, sql, catalog, cachedParseInfo);
	}

	public void setRowId(int parameterIndex, RowId x) throws SQLException {
		JDBC4PreparedStatementHelper.setRowId(this, parameterIndex, x);
	}
	
	/**
	 * JDBC 4.0 Set a NCLOB parameter.
	 * 
	 * @param i
	 *            the first parameter is 1, the second is 2, ...
	 * @param x
	 *            an object representing a NCLOB
	 * 
	 * @throws SQLException
	 *             if a database error occurs
	 */
	public void setNClob(int parameterIndex, NClob value) throws SQLException {
		JDBC4PreparedStatementHelper.setNClob(this, parameterIndex, value);
	}

	public void setSQLXML(int parameterIndex, SQLXML xmlObject)
			throws SQLException {
		JDBC4PreparedStatementHelper.setSQLXML(this, parameterIndex, xmlObject);
	}
}
toString wird nicht überschrieben...

bzw was hast du überhaupt damit vor?
 

Verjigorm

Top Contributor
Ja danke, habe alles gefunden, was ich gesucht habe :)

Java:
	/**
	 * Returns this PreparedStatement represented as a string.
	 * 
	 * @return this PreparedStatement represented as a string.
	 */
	public String toString() {
		StringBuffer buf = new StringBuffer();
		buf.append(super.toString());
		buf.append(": "); //$NON-NLS-1$

		try {
			buf.append(asSql());
		} catch (SQLException sqlEx) {
			buf.append("EXCEPTION: " + sqlEx.toString());
		}

		return buf.toString();
	}

Im Endeffekt war ich an asSQL() interessiert!

mfg Verjigorm
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A Finde den Fehler nicht. Allgemeine Java-Themen 7
G Finde den Grund für ArrayIndexOutOfBounds nicht Allgemeine Java-Themen 2
B Finde letztes veränderte File Allgemeine Java-Themen 4
D Programm läuft fehlerhaft, finde den Fehler nicht Allgemeine Java-Themen 6
S Eclipse Wo finde ich die JPA Annotationen? Allgemeine Java-Themen 3
H NullPointer finde den grund nicht Allgemeine Java-Themen 9
A Wie finde ich heraus, was eine Unterklasse implementiert? Allgemeine Java-Themen 5
chik Doppelt verkettete Liste bzw. Zirkulärliste (kleiner Fehler, den ich nicht finde) Allgemeine Java-Themen 4
T Problem, warum macht der das so(finde kein titel.) Allgemeine Java-Themen 3
B NullPointerExceptoin | finde sie nicht :( Allgemeine Java-Themen 5
G Wo finde ich die tools.jar? Allgemeine Java-Themen 10
K Bubblesort Programmierung, finde Fehler nicht . Allgemeine Java-Themen 25
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
B Konkrete Aufgabe Allgemeine Java-Themen 9
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
L rotateLeft implementierung Allgemeine Java-Themen 2
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Mutable objects und Implementierung von ChangeEvents Allgemeine Java-Themen 5
W Queue Implementierung Allgemeine Java-Themen 6
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
F Implementierung von Teilprogrammen [Java|Python] Allgemeine Java-Themen 7
I TimSort - Sortieralgorithmus - Erklärung und Pseudocode - Implementierung Allgemeine Java-Themen 2
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
ruutaiokwu burstsort-implementierung in java? Allgemeine Java-Themen 2
D Implementierung einer Mehrsprachigkeit, wichtig ? Allgemeine Java-Themen 5
D Implementierung einer Rechteverwaltung Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
R "Countdown" Implementierung Allgemeine Java-Themen 5
K A*-Implementierung flexibler machen Allgemeine Java-Themen 4
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
S BlueJ Cäsar-Implementierung Allgemeine Java-Themen 6
S Implementierung Programmneustart Allgemeine Java-Themen 10
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
G Implementierung einer Kommunikation Allgemeine Java-Themen 7
S Implementierung einer PluginArchitektur Allgemeine Java-Themen 5
A OOP: Überschreiben/Implementierung von Methoden Allgemeine Java-Themen 5
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
R Intervall-Implementierung mit selbstgebauter LinkedList Allgemeine Java-Themen 7
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
G Implementierung vom AKS-Test Allgemeine Java-Themen 11
R software implementierung Allgemeine Java-Themen 3
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
K Design / Implementierung Allgemeine Java-Themen 5
B jre browser implementierung ? Allgemeine Java-Themen 4
B Elegantere Lösung bei der Implementierung eines Interfaces Allgemeine Java-Themen 2
G Klasse Queue Implementierung in Java Allgemeine Java-Themen 4
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben