Static String Pfad in Java

Habe ich nur eine main Klasse in meinem kleinen Programm, und es wird eine Menge Weg.
Sie wird sich nicht ändern, während das Programm läuft, ich glaube, ich kann static in Ihrer Erklärung aber nicht sicher für das Finale. Außerdem, ich bin mir nicht sicher, wo ist der beste Ort, um zu erklären, meine Pfade. Ist es in der main-Klasse oder kurz vor?

Hier ein Beispiel von meinem code:

package classtest;

public class ClassTest {
    //Should I put the path here?
    public static void main(String[] args) {
        String dirPath = "C:/Users/test1/"; 
        String pathOut = "C:/Users/stats.csv"; 
        //or here?
    }   
}
  • Sicher, Sie deklarieren Sie als Letzte, so dass Sie kann nicht nachträglich geändert werden, das aussieht, wie das, was Sie wollen : „Sie wird sich nicht ändern, während das programm ausgeführt wird“

 

5 Replies
  1. 0

    Du tun können diese Art der Umgestaltung:

    public class ClassTest {
        //Specify a base path for all paths to be used
        public static final String BASE_PATH = "C:/Users";
        //1. If these paths will be used in several methods, declare them here
        public static final String dirPath = BASE_PATH + "/test1/"; 
        public static final String pathOut = BASE_PATH + "/stats.csv"; 
    
        public static void main(String[] args) {
            //2. If those paths will be used in the main method only, declare them here
            final String dirPath = BASE_PATH + "/test1/"; 
            final String pathOut = BASE_PATH + "/stats.csv"; 
        }   
    }

    Statische Mitglieder einer Klasse deklariert werden sollte außerhalb der Umfang einer Klasse-Methode.

    • Ich danke Ihnen, Sir, das ist genau das, was ich suchte.
    • Du bist herzlich willkommen @zardlemalefique
  2. 1

    Ein alternativer Ansatz ist, Lesen Sie Ihre Pfade aus einer Eigenschaften Datei:

    Properties prop = new Properties();

    Und verwenden Sie die Eigenschaften, wo immer Sie möchten. Es macht refactoring später sehr einfach:

    prop.getProperty("diPath");
    prop.getProperty("pathOut");
  3. 1

    Es ist häufiger, um Ihre Pfade Argumente, so kann man dies von der person, die das Programm läuft.

    public class ClassTest {
        public static void main(String[] args) {
            if (args.length < 2) {
                System.err.println("Usage: java ClassTest {dir} {output}");
                return;
            }
            String dirPath = args[0]; 
            String pathOut = args[1];
    
        }   
    }
    • Ich bin nicht vertraut mit diesem Ansatz, aber es sieht so bequem zu, danke Peter !
    • Dies ist, was die Kommandozeilen-Argumente werden in der Regel verwendet für.
  4. 1

    final keyword bedeutet, dass der Wert nie zugewiesen.

    static Stichwort lassen die variable ein Klasse variable anstelle von Instanz-Variablen.

    Einen zusätzlichen Hinweis, in der Regel Klassen-Konstanten werden groß geschrieben mit Unterstrich Trennzeichen, so dass ich die Namen geändert.

    Also, wenn Sie mögen, erklären Sie „Global“ das beste ist, verwenden Sie einen code ähnlich dem folgenden.

    public class ClassTest {
        public static final String DIR_PATH = "C:/Users/test1/";
        public static final String PATH_OUT = "C:/Users/stats.csv";
    
    
        public static void main(String[] args) {
            //Use DIR_PATH or PATH_OUT as needed
        }   
    }

    Beachten Sie, dass der Vorherige code ist nur nützlich, wenn Sie die Wiederverwendung der DIR_PATH oder PATH_OUT Variablen in verschiedenen Methoden. Ansonsten definieren die lokale variable der main-Methode richtig ist, zu begrenzen Sie die Sichtbarkeit der einzige Teil des Codes verwenden.

    • Danke für die Erwähnung am besten stilistischen Vorgehensweisen und die richtigen Anpassungen.
    • Danke Davide, diese Antwort ist auch sehr klar und hilfreich.
  5. -1

    Versuchen Sie, diese .. Es ist der sauberste Weg :

    public class ClassTest implements StaticPath {
    
        public static void main(String[] args) {
    
                System.out.print(PATH_OUT);
    
        }   
    }
    
    
    interface StaticPath {
    
        public final static String PATH = "C:/Users/"; 
    
        public final static String PATH_OUT = PATH + "stats.csv";
        public final static String PATH_IN = PATH + "dyn.csv";
    
    }
    • Dies wäre unnötig verwirrend für jemand, der dieses liest-Programm. Auch dies würde nicht kompilieren.
    • Das kompilieren einwandfrei ! und ich ist der beste Weg, wenn Sie speichern möchten, eine 100-Pfad zum Beispiel statt, wenn diese in der gleichen java-Klasse mit buisness-Logik. Vielleicht ist es nicht der beste Ansatz für Sie, aber der code kompiliert fein 😉 und thks für die minus
    • Es gibt Dinge, die sind subjektiv in dieser Hinsicht, ich gebe Ihnen, dass. Ableiten von interfaces (und damit die übersichtlichkeit des project space), nur so können Sie die Referenz die öffentliche, nicht private Konstante Werte ist sicherlich nicht so ein Fall. Auch, kopieren Sie Sie und fügen Sie diese in ein IDE und es selbst testen, bevor Sie Sie beschriften mich einen Lügner. Dieser code ist nicht kompilieren.
    • Getestet habe ich es .. versuchen Sie Ihr selbst plz und aufhören zu sagen, legt !
    • Neil ist ein Recht, das nicht kompiliert. Sie haben einen Tippfehler hier StaticPAth und hier SaticPath (die Namen sind unterschiedlich).
    • Ok .. habe ich es behoben 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.