当我尝试编译以下代码时
public interface SomeInterface{
private static Logger logger = Logger.getLogger();
public default void someMethod(){
logger.info("someMethod: default implementation");
}
}
我遇到了一个错误
Illegal modifier for the interface field SomeInterface.logger; only public, static & final are permitted
当我删除private
修饰符时,代码可以编译通过,但我不希望来自包中的其他类能看到这个字段。
为什么Java不允许我这样做,尽管这确实很有道理呢?