4 Stimmen

Java-Schnittstellenreduktion in der Sichtbarkeit, nur NICHT

Ich muss etwas Offensichtliches vermissen, aber ich bekomme:

Kann die Sichtbarkeit der geerbten Methode nicht reduzieren

Und ich verstehe nicht warum. Dies ist mein Interface:

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

Und das ist meine Implementierung:

public class Stupid implements QueryBuilderPart {
    @Override
    StringBuilder toStringBuilder() {
        return null;
    }
}

Sowohl die Klasse als auch die Implementierung befinden sich im selben Paket. Irgendwelche Ideen?

14voto

Pau Kiat Wee Punkte 9305

Standardmäßig ist die Methode der Schnittstelle public, aber Sie können sie auf die Standard-Sichtbarkeit reduzieren, die Paketebene-Sichtbarkeit ist.

Daher sind die folgenden beiden Codeblöcke gleich:

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

interface QueryBuilderPart {
    public abstract StringBuilder toStringBuilder();
}

Beachten Sie, dass die Methode der Schnittstelle auch abstract ist

Also sollten Sie wie folgt vorgehen:

public class Blöd implements QueryBuilderPart {
    @Override
    public StringBuilder toStringBuilder() {
        return null;
    }
}

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