Best Practice Wiederverwendung von Klassen

phil63

Mitglied
Hallo zusammen,

ich bin ein blutiger Anfänger im Bereich Java. Dazu habe ich mir ein dickes Buch geschnapt und habe angefangen :)

Jetzt habe ich meine ersten Schritte unternommen und die Beispiele und Listings durchgearbeitet. Dabei habe ich mir einige kleinere Methoden geschrieben, welche ich (so glaube ich) immer mal wieder gebrauchen kann. Auf diese würde ich also in weiteren Programmen gerne zurückgreifen. Jetzt frage ich mich, wie ich dies am besten bei Eclipse händle?

Ich halte es für ziemlich unsinnig, diese Classe(n) immer wieder in das Projekt hinein zu kopieren. Dies würde ja nur dazu führen, dass sich der Speicherplatz mit redundaten Codezeilen extrem aufbläht und bei einer Änderung alle Programme / Kopien der Classen angepasst werden müssen.

Es gibt doch bestimmt einen weg, wie ich dieses einmal zentral schreibe bzw. ablege, in meine Programme importieren kann und bei einer Änderung dies einmal zentral ändere und sich dies entsprechend automatisch in die Programme (zumindest nach einer neuen compilation) einfügt, oder?

Wie gesagt bin noch ganz neu in Sachen Java und Eclipse.

Wie würde man bei einer solchen zentralen Lösung mit Pfadänderungen z.B. durch Neuinstallation des PC's umgehen?

Für eure Hilfe wäre ich sehr dankbar.

Gruß
 

Kevin94

Top Contributor
In Eclipse gibt es die Möglichkeit andere Projekte genauso wie externe Libs einzubinden.
Einfach ein Projekt mit diesen Hilfsklassen (in einem Package, nicht im default Package, das gibt beim import immer Ärger) anlegen und dann in anderen Projekten einfach über Project -> Properties -> Java Build Path -> Project -> add das entsprechende Projekt hinzufügen und schon sind die Klassen mit dabei.
 

phil63

Mitglied
Hy,

danke für die schnelle Antwort.

Also ich würde als erstes einen Windows-Ordner anlegen, welche ich z.B. MeineHilfsklassen nennen.
Danach lege ich ein Projekt mit eigene Package an.

Dieder Import verlinkt also quasi nur und kopiert den import nicht in das neue Projekt? Damit wären Änderungen sofort in allen anderen Projekten drin?

Danke und Gruß
 

Kevin94

Top Contributor
Du legst in Eclipse ein Projekt in deinem normalen Workspace an, z.B. "Hilfklassen". In diesem Projekt hast du dann ein (oder mehrer) Packages mit deinen Hilfsklassen. In den anderen Eclipse Projekten importierst du dann wie beschrieben dieses Projekt und dein Hilfklassen sind dort verfügbar. Den SourceCode für diese Hilfsklassen hast du dann nur einmal und Änderungen sind sofort in allen anderen Projekten übernommen. Das gilt natürlich nicht für mit export erzeugt .jar Dateien.
 

phil63

Mitglied
Hy,

super vielen Dank.
Habe es gleichmal ausprobiert. Es hat super funktioniert.

Allerdings wird mir eine Warnung angezeigt, welche ich nicht ganz verstehe:

Java:
public static void main(String[] args) {
		
		myDatenbankConnection dbMySQL = new myDatenbankConnection();
		
		dbMySQL.test1();
		}

The static method test1() from the type myDatenbankConnection should be accessed in a static way


Was habe ich hier falsch gemacht. Der Aufruf der Methode funktiniert aber.

Sollte sich irgentwann eimal der Pfad vom Hilfsklassenprojekt ändern, muss ich den vermutlich immer neu angeben. Kann man den auch nciht fest vorgeben, sondern relativ zur Position des Projektes?

Danke und Gruß
 

Michael...

Top Contributor
The static method test1() from the type myDatenbankConnection should be accessed in a static way
Was habe ich hier falsch gemacht. Der Aufruf der Methode funktiniert aber.
test1 ist als statische Methode definiert. Daher ist es nicht notwendig/macht auch keinen Sinn diese an einer Instanz der Klasse aufzurufen. Solche Methoden sollten an der Klasse selbst aufgerufen werden - dann kommt man fälschlicherweise nicht auf die Idee, dass man hier etwas Instanzspezifisches bewirkt.
 

tuttle64

Bekanntes Mitglied
Wenn Du eine Methode aus einem static-Kontext aufrufst, muss diese Methode ebenfalls static deklariert sein. Abgesehen davon, sollten Utilities Methoden eh static deklariert werden, da man diese ohne die Instantierung der Klasse verwenden möchte!
 

phil63

Mitglied
Hy,

ok, das war ja auch nur ein Test :)

Also wenn ich es richtig verstanden habe, dann

kleine Hilfsmethoden werden static bezeichnet und entsprechend direkt aufgerufen.
Aber eine echte Datenbankverbindung würdet ihr dich auch als Objekt aufrufen (also eine INstanz erzeugen) oder?

Gruß
 

Kevin94

Top Contributor
Ja, da eine Datenbankverbindung für sie spezifische Daten hat (wie Host, User und Passwort) und gleichzeitig mehrer Datenbankverbindungen nebeneinander existieren können und sollen, ist das sinnvoll sowas in einer Instanz zu kapseln.
 

phil63

Mitglied
gibt es da Regeln oder Hinweise, mit denen man entscheidenen kann, wan man mit static-Methoden arbeitet und wann man mit instanzen arbeiten sollte?

Ich wollte z.B. mit einer Klasse anfangen, mit der ein lesen von TXT-Dateien möglich ist.
Nach dem was du geschrieben hast, würde ich das besser so aufbauen, dass man daraus mehrere Instanzen erstellen kann, oder?

Gruß und Danke
 

Kevin94

Top Contributor
Wann genau man statische Methoden einsetzten soll ist selbst unter ich sag mal erfahrenen Programmierern umstritten. Gibt auch mehrer Threads dazu hier im Forum, aber ein "verbindliche" Richtline gibt es nicht.
Als Hilfestellung zu Entscheidung würde ich sagen, wo immer man statische, nicht finale Variablen anlegt ohne auch Instanzen mit Instanzvariablen zu haben, läuft was schief. Aber ich bin selber nur Hobby-Programmierer, wenn das die anderen anders sehen, korrigiert mich bitte.
 

Michael...

Top Contributor
Vor allem Anfänger neigen dazu ziemlich viel static zu machen, einfach weil sie es nicht besser wissen oder es eben "einfacher" ist. Das static ist da aber in 99% der Fälle immer falsch. Meine Meinung: so wenig static wie möglich. In der Regel braucht man (mit Ausnahme der main Methode) gar kein static.

static macht Sinn bei Hilfsklassen/Methoden wie z.B die Klasse java.util.Math, die "Funktionen" bieten, die etwas ohne Instanzrelevanz zurückliefern. Es wird beim Singleton Pattern usw. verwendet - für Anfänger kaum bis gar nicht relevant.

Java selbst nutzt es auch für "global" geltende/zugängliche "Konstanten" oder für komfortable Ausgaben per System.out...
 

Marco13

Top Contributor
@Michael... : Bei der Frage "static oder nicht" ist es IMHO GANZ wichtig, zwischen Fields und Methods zu unterscheiden. Ich hatte schon gelegentlich die "Daumenregel" genannt: Methoden sollte man IMMER static machen, wenn man sie ohne Umstände static machen kann. Fields sollte man NIE static machen, außer bei Konstanten (und den wenigen, hier mal verschwiegenen Ausnahmen (S*****on)).

Aber trotzdem ist die Frage, http://www.java-forum.org/allgemein...embermethoden-statische-utility-methoden.html nicht ganz einfach zu beantworten.
 

Landei

Top Contributor
Methoden statisch machen ist auch nicht ganz ohne, weil man sie damit sozusagen aus der Vererbung "herausnimmt". Wenn man dann an zig Stellen
Code:
Foo.blubb()
stehen hat, aber in einer abgeleiteten Klasse
Code:
Bar
gerne
Code:
blubb()
überschreiben würde... Pech gehabt.

Natürlich kann man
Code:
Bar
eine neue Version von
Code:
blubb()
mitgeben, nur bekommt der "alte" Code davon leider nichts mit. Vererbung regelt sowas "automatisch".
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Das ist praktisch das einzige Argument("chen"?) gegen statische Methoden in diesem Sinne, und auch im verlinkten Thread etwas ausführlicher diskutiert. Ich finde, das Argument, dass man eine statische Methode leicht aus einer (polymorphen) Methode heraus aurufen kann, recht überzeugend - speziell mit den defender methods aus Java 8 ( Virtuelle Erweiterungsmethoden (virtual extension methods) in Java 8 ).

Man könnte mal wieder lapidar sagen: YADC, yet another design choice, das muss man halt machen, wie man meint, es sei richtig. Aber wie schon im anderen Thread gesagt: Irgendeine (formale, evaluierbare) Grundlage, auf der man die Entscheidung treffen könnte, wäre nicht schlecht...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Frage zur Wiederverwendung von Klassen Java Basics - Anfänger-Themen 3
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
J Klassen Problem Java Basics - Anfänger-Themen 8
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
V_Fynn03 Klassen Überweisungen tätigen und einzahlen mit 2 Klassen Java Basics - Anfänger-Themen 1
W Abarbeitungsreihenfolge Anonyme Klassen Java Basics - Anfänger-Themen 2
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
E Klassen implementieren Java Basics - Anfänger-Themen 94
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
C Methoden/Klassen Übergabewerte Java Basics - Anfänger-Themen 8
C Java Klassen/Methoden/Übergabeparameter Java Basics - Anfänger-Themen 4
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
L Wie teilt man ein Programm in vernünftige Klassen ein? Java Basics - Anfänger-Themen 10
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
A Methode, Klassen Java Basics - Anfänger-Themen 3
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
J Zwei Klassen die sich gegenseitig referenzieren - Bad practice? Java Basics - Anfänger-Themen 4
G Klassen und Objekte Java Basics - Anfänger-Themen 2
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
D Klassen ausgeben Java Basics - Anfänger-Themen 2
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
G Refactoring von mehreren identischen Klassen Java Basics - Anfänger-Themen 36
O Wrapper Klassen Java Basics - Anfänger-Themen 6
CptK Best Practice Klassendiagramm aus fertigen Klassen erstellen lassen Java Basics - Anfänger-Themen 2
R OOP Instanzierung in verschiedenen Klassen Java Basics - Anfänger-Themen 8
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben