Static function in interface

für meine Konfigurations-Klasse will ich eine Interface haben. In diesem Interface möchte ich zusichern das es eine

public static Config getInstance()

existiert. Allerdings in interface können keine static function definiert werden. Wie könnte ich dieses Problem lösen?

Du kannst statische Methoden nicht überschreiben.

Vermutlich willst du einen Interface bauen für spätere Singelton nutzung. Das geht nicht.

Das macht auch garkein Sinn in einem Interface eine static-Methode zu haben.

Ein Interface sorgt dafür, das sichergestellt wird das ein Objekt alle Methoden beinhaltet die von einem anderen Objekt gefordert werden ohne den Inhalt zu spezifizieren.

Du kannst aber keine statischen-Methoden überschreiben. Das macht garkein Sinn.
Static bedeutet “nicht OOP”, also weder an ein Objekt gebunden noch sonstige OOP Sachen.
Da Java aber eine reine OOP Sprache ist, müssen statische Methoden und Variablen halt trotzdem in irgendeine Klasse mit reingepackt werden weil es keinen anderen Ablagerort gibt.

[quote=ZickZack]Vermutlich willst du einen Interface bauen für spätere Singelton nutzung.[/quote]Wenn das stimmt dann lass Dir sagen, dass technische Singeltons mehr Probleme verursachen, als sie lösen.

Logische Singeltons kann man auch verwenden ohne das auf technischen Wege sicherzustellen. Allen voran wäre da DI mit entsprechenden Frameworky (Spring oder Guice) zu nennen.

bye
TT

Abgesehen davon, dass es ab Java 8 geht solltest du für „Singletons“ ein Enum mit einer Konstante nutzen (wenn man sie denn wirklich braucht) :slight_smile:

Am besten das Problem vermeiden :wink:

Konfigurationen fuer Web Apps kann man zB. in der web.xml festlegen, diese kann man dann im Tomcat bzw. Glassfish ueber ein „Admin Interface“ aendern.

In Java 8 kann man **konkrete **statische Methoden in Interfaces schreiben. Der TO will aber eine abstrakte statische Methode, die dann implementiert werden muss. Das geht auch in Java 8 nicht, und wird es aller Voraussicht nach auch in Zukunft nicht geben, weil wie schon oben gesagt alles statische „außerhalb“ jeder Vererbung steht.

Ich stell zu der Frage mal noch folgende zusätzlich : Factory ?
Angenommen ich möchte ein Factory-Interface erstellen, so kann ich ja dann trotzdem die nötige static getIntance Methode nicht mit vorgeben.
Also mal abgesehen vom Singleton : Wie siehts mit Factories aus ?

Die Frage wurde bereits beantwortet.

Den Blitzeinfall hatte ich auch bereits einmal vor ein paar Monaten.
Was Factories und Konstruktoren allgemein angeht ist meiner Meinung nach Java ziemlich hinten her. Die Tatsache das die Nötigkeit besteht überhaupt erst Factory Methoden zu schreiben ist doch ein Zeugnis dafür das standard Konstruktoren nicht mehr den Anforderungen gerecht werden.

Ahhh mist oops, überlesen :smiley: