1159 Stimmen

Was ist eine "statische Klasse" in Java?

Gibt es so etwas wie static class in Java?

Was ist die Bedeutung einer solchen Klasse? Müssen alle Methoden der statischen Klasse auch static sein?

Ist es auch umgekehrt erforderlich? Dass wenn eine Klasse nur statische Methoden enthält, die Klasse auch statisch sein muss?

Wofür sind statische Klassen gut?

6 Stimmen

Sie könnten sich für stackoverflow.com/questions/3584113/java-static-class interessieren.

0 Stimmen

Statische Klassen werden im Grunde verwendet, um Klassen zusammenzufassen.

1 Stimmen

Was meinst du mit "wie static class"?

1voto

JonR85 Punkte 609

Gibt es so etwas wie eine statische Klasse in Java?

Singletons sind 'wie' eine statische Klasse. Es überrascht mich, dass das noch niemand erwähnt hat.

public final class ClassSingleton { 

private static ClassSingleton INSTANCE;
private String info = "Initiale Info Klasse";

private ClassSingleton() {        
}

public static ClassSingleton getInstance() {
    if(INSTANCE == null) {
        INSTANCE = new ClassSingleton();
    }

    return INSTANCE;
}

// getters and setters

public String getInfo(){
    return info;
  }
}

Die Verwendung ist ähnlich wie:

String infoFromSingleton = ClassSingleton.getInstance().getInfo()

Singletons sind ideal zum Speichern von ArrayLists/List/Collection-Klassen/usw. Wenn Sie oft Sammlungen aus verschiedenen Bereichen sammeln, aktualisieren, kopieren müssen und diese Sammlungen synchronisiert sein müssen. Oder eine Zu Viele-Beziehung.

-1voto

duffymo Punkte 298898

Java hat statische Methoden, die mit Klassen verbunden sind (z. B. java.lang.Math hat nur statische Methoden), aber die Klasse selbst ist nicht statisch.

-2voto

Jay Rajput Punkte 1745

Alle guten Antworten, aber ich habe keine Referenz zu java.util.Collections gesehen, die tonnenweise statische innere Klassen für ihre statischen Faktormethoden verwendet. Also füge ich das Gleiche hinzu.

Füge ein Beispiel aus java.util.Collections hinzu, das mehrere statische innere Klassen hat. Innere Klassen sind nützlich, um Code zu gruppieren, auf den über die äußere Klasse zugegriffen werden muss.

/**
 * @serial include
 */
static class UnmodifiableSet extends UnmodifiableCollection
                             implements Set, Serializable {
    private static final long serialVersionUID = -9215047833775013803L;

    UnmodifiableSet(Set s)     {super(s);}
    public boolean equals(Object o) {return o == this || c.equals(o);}
    public int hashCode()           {return c.hashCode();}
}

Hier ist die statische Faktormethode in der java.util.Collections-Klasse

public static  Set unmodifiableSet(Set s) {
    return new UnmodifiableSet<>(s);
}

1 Stimmen

0 Stimmen

Haben Sie Ihren Kommentar nicht erhalten? Können Sie näher darauf eingehen? Versuche, Ihren Kommentar zu verstehen.

-3voto

dJack Punkte 35

Eine statische Methode bedeutet, dass sie ohne Erstellen eines Objekts der Klasse aufgerufen werden kann, im Gegensatz zu public:

public class MyClass {
   // Statische Methode
   static void myStaticMethod() {
      System.out.println("Statische Methoden können ohne Erstellen von Objekten aufgerufen werden");
   }

  // Öffentliche Methode
  public void myPublicMethod() {
      System.out.println("Öffentliche Methoden müssen durch Erstellen von Objekten aufgerufen werden");
   }

  // Hauptmethode
  public static void main(String[ ] args) {
      myStaticMethod(); // Rufe die statische Methode auf
    // myPublicMethod(); Dies würde einen Fehler ausgeben

    MyClass myObj = new MyClass(); // Erstelle ein Objekt der Klasse MyClass
    myObj.myPublicMethod(); // Rufe die öffentliche Methode auf
  }
}

0 Stimmen

Beantwortet die Frage nicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X