【发布时间】:2014-04-04 18:24:36
【问题描述】:
辅助功能
接口的所有成员缺少访问修饰符都是隐式公开的
接口的所有成员都是隐式公开的。
当我尝试以下代码时:
public interface Test {
protected int i = 10;
}
并编译,我得到了
Test.java:3:错误:此处不允许修饰符受保护
受保护的int i = 10;
^
Java 版本: Java(TM) SE Runtime Environment (build 1.8.0-b129)
但是在上面的Interface 成员声明中我不缺少访问修饰符那么为什么我会收到这个错误。
【问题讨论】:
-
访问说明符只允许用于我猜的方法,因为 Java 8 支持 iterface 中的默认方法实现。
-
@Puru-- 我试过
protected void testMethod();,但出现编译错误。Illegal modifier for the interface method test; only public & abstract are permitted -
和规范说
All members of interfaces lacking access modifiers are implicitly public不仅仅是方法 -
是的语句没有说,具体的访问修饰符,我猜你可以考虑
default作为访问修饰符。但你是对的,除了public和default,你将无法使用任何其他东西 -
我可能没记错。我发现这两个在接口中提到受保护的线程:mail.openjdk.java.net/pipermail/lambda-dev/2012-July/… 和 mail.openjdk.java.net/pipermail/lambda-dev/2012-August/…