Importieren Von Klassen In Java-Dateien
Ich bin derzeit lernen zu entwickeln in Java und bin interessiert an der Erstellung von Java-Klassen, die von anderen Benutzern importieren, die in Ihrem Programm zu verwenden. Ja, ich weiß, dass mein Beispiel-Klasse ist einfach und dumm, aber ich will lernen, das Konzept und beginnen Sie, mehr komplexe Klassen, die Leute können den import in Ihre Projekte.
Habe ich eine einfache "Logger" - Klasse, die wenn Sie aufgerufen wird, meldet der text auf die Konsole und in eine Textdatei für die Lesbarkeit. Rufen Sie diese Klasse, indem die folgenden Befehle...
Logger Logger = new Logger();
Logger.create();
Logger.log("This text will be logged to the console and log.log");
Sehen Sie unten die Logger Klasse.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Logger {
FileWriter fw;
BufferedWriter br;
File file = new File("log.log");
boolean fileExists = file.exists();
public void log(String message) {
try {
fw = new FileWriter(file, true);
br = new BufferedWriter(fw);
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
if(hour > 12)
hour = hour - 12;
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int millis = cal.get(Calendar.MILLISECOND);
int ampm = cal.get(Calendar.AM_PM);
String ampmString;
if(ampm == 1)
ampmString = "PM";
else
ampmString = "AM";
String now = String.format("%02d:%02d:%02d.%03d %s", hour, minute, second, millis, ampmString);
System.out.println(now + " - " + message);
br.write(now + " - " + message);
br.newLine();
br.close();
} catch (Exception err) {
System.out.println("Error");
}
}
public void create() {
try {
fw = new FileWriter(file, true);
br = new BufferedWriter(fw);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-YYYY");
String dateString = sdf.format(new Date());
if(file.length() != 0)
br.newLine();
System.out.println("Log: " + file.getAbsolutePath());
br.write("--------------------" + dateString + "--------------------");
br.newLine();
br.close();
} catch (Exception err) {
System.out.println("Error");
}
}
}
Das Problem, das ich habe ist, um diese Klasse nutzen zu können muss ich hinzufügen, dass es zu jedem einzelnen Projekt, das ich erstellen und verwenden möchten. Gibt es eine Möglichkeit, ich kann hinzufügen ein import wie mydomain.Logger.*;
und in der Lage sein Zugriff auf diese Klasse und die Methoden, die es enthält?
Meine Frage, Was ist der beste Weg, um zulassen, dass jemand zu importieren/verwenden mein Logger-Klasse in der einfachste Weg? Welche Schritte muss ich nehmen, um Ihnen zu erlauben, dies zu tun?
Ich verstehe, dass. Ich war nur Herumspielen mit dieser Idee und dies war die einfachste Sache, die ich denken konnte. Vielen Dank für die Anregungen. 🙂
InformationsquelleAutor Dev | 2013-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kompilieren Sie Ihre Klasse in eine JAR-Datei, und fügen Sie das jar in den classpath des Projekts. Dies ist die standard-Java-Ansatz zur Wiederverwendung von Klassen.
import org.apache.commons.lang.StringEscapeUtils;
Aber mit meiner domain wieimport com.mydomain.Logger;
?Ja, Sie können
import com.mydomain.Logger;
und kompilieren Sie finden es in der jar-Datei. Wenn Sie mit einer IDE wie Eclipse, fügen Sie die jar-Datei dem Projekt Abhängigkeiten.Es bekam. Dank jalynn2.
InformationsquelleAutor jalynn2
Jede Klasse hat eine
package
. Sie erklären es auf den Anfang der Datei. Für Ihre Klasse könnte dies alsopackage com.mydomain;
. (Dein Beispiel nicht erklären, ein Paket, damit diedefault
zugeordnet ist - denken "none"). Die Pakete entsprechen den tatsächlichen Ordner z.B. sollten Sie platzieren Sie IhreLogger.java
im Pfadcom/mydomain/
in Ihrem Dateisystem, in übereinstimmung mit einem Paket-Deklaration, wie die oben genannten.Nun, wenn Sie eine Klasse im selben Paket könnten Sie Ihre
Logger
Klasse nur durch die Deklaration einer Variablen wie in deinem Beispiel. Keine Importe notwendig.Wenn Sie erstellen Sie die neue Klasse in ein anderes Paket also
com.otherdomain
(dies bedeutet, dass es tatsächlich in einen anderen Ordner im Datei-system), dann würden Sie haben, um die Verwendung einer import-Anweisung wie folgt aus:import com.mydomain.Logger;
oderimport com.mydomain.*;
sonst würde der compiler zeigt einen Fehler und würde nicht lassen Sie IhreLogger
Klasse.Wenn Sie möchten, dass andere Leute Ihre Klasse, die Sie würde wahrscheinlich Schiff Ihre binäre version (D. H. die kompilierte
Logger.class
) nicht die Quelle. Und Sie würde wahrscheinlich setzen, dass die Datei in einemjar
(das ist eine Zip-Datei-Struktur mehr oder weniger).Wenn dann wollte ich Ihre Klasse könnte ich nur hinzufügen, dass Glas zu den
classapth
von meinem Projekt, damit der compiler und das Laufzeitsystem würde wissen zu suchen, wird diese Datei bei der Suche nach Klassen. Ich würde in der Lage sein, schreiben einenimport
Anweisung, mich in meine Klasse, und ich konnte verwenden Sie Ihre logger.Ich hoffe, das klärt die Dinge
InformationsquelleAutor c.s.
Erstellen Sie eine jar-Datei, dann können die Leute importieren, die in Ihren Projekten.
InformationsquelleAutor user2619725
Der Scala-Sprache können Sie importieren die Mitglieder von beliebigen Objekten, aber Java wird nur lassen Sie Sie importieren statische Mitglieder. Können Sie versuchen, mit statische Importe. Jedoch würden Sie brauchen, um Ihre Logger-Klasse die statische
log
Methode. Da du wahrscheinlich nur eine einzige Instanz von logger, würde ich empfehlen die singleton-enum-pattern:Nun in jeder Datei, die Sie es verwenden möchten, können Sie einfach tun
import static mydomain.Logger.log;
direkten Zugriff auf dielog
Methode!InformationsquelleAutor DaoWen