statische Interfaces..?

Status
Nicht offen für weitere Antworten.

sirbender

Top Contributor
Ich haette gerne so etwas wie statische Interfaces.

D.h. bei Klassen die so ein Interface implementieren kann man sicher sein, dass z.B. gewisse statische variablen bzw. methoden vorhanden sind.

man koennte dann testen ob eine Klasse dieses Interface implementiert und dann die statischen Methoden ausfuehren.

Warum gibt es sowas nicht?
 
Mal angenommen du hast so ein statisches Interface I, und zwei Klassen A und B die das Interface implementieren. Und jetzt? Du kannst nicht "I.statischeMethode()" schreiben, weil nicht klar ist ob du die Version von A oder von B aufrufen willst. Du kannst "A.statischeMethode()" schreiben, aber dafür benötigst du das Interface nicht.

Für was willst du das brauchen? Allenfalls gibt es ein passendes Pattern das man in so einem Fall einsetzt.
 
> man koennte dann testen ob eine Klasse dieses Interface implementiert

nennt sich auch Tagging Interface.. zB..ähhh? Serializable...

>Warum gibt es sowas nicht?

Weil statisch und OO (dynamisch) sich nicht so gut vertragen.
 
einfacher grund:
die entwickler von Java haben es nicht zugelassen....


statische Methoden brauchen einen body und das geht nicht in interfaces...

was du machen kannst
Java:
public class RR implements Foo {
    public static void main(String[] args) {
        Bar.foobar();
    }

    interface Foo {
        public static class Bar {
            public static void foobar() {
                System.out.println("Hello");
            }
        }
    }
}
ueber den sinn laesst sich verdammt streiten ;-)
 
Zuletzt bearbeitet von einem Moderator:
Das raff ich nicht...was hat das ueberhaupt noch mit einem Interface zu tun?

Bar ist zwar in Foo definiert, aber bei foobar() handelt es sich lediglich um eine statische Methode in einer Klasse. Man kann nicht ueber Foo auf diese Methode zugreifen...oder taeusche ich mich da?
 
Das raff ich nicht...was hat das ueberhaupt noch mit einem Interface zu tun?

Bar ist zwar in Foo definiert, aber bei foobar() handelt es sich lediglich um eine statische Methode in einer Klasse. Man kann nicht ueber Foo auf diese Methode zugreifen...oder taeusche ich mich da?
am besten du vergisst das Beispiel... hat natuerlich nicht mehr viel mit einem Interface zu tun...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben