문제

Possible Duplicate:
Reduce visibility when implementing interface in Java

I must be missing something obvious, but i am getting:

Cannot reduce the visibility of the inherited method

And I don't see how. This is my interface:

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

And this is my implementation:

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

Both the class and the implementation are in the same package. Any Ideas?

도움이 되었습니까?

해결책

By default interface's method is public, but you reduce it to default visibility, which is package level visibility.

So the following two block of code are the same:

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

interface QueryBuilderPart {
    public abstract StringBuilder toStringBuilder();
}

Note that interface's method is abstract as well

So you should do as following:

public class Stupid implements QueryBuilderPart {
    @Override
    public StringBuilder toStringBuilder() {
        return null;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top