接口定义行为的协议,而不是行为的协议。实现接口的类遵守该接口定义的协议。
接口变量是静态的,因为无法单独实例化Java接口。必须在没有实例的静态上下文中分配变量的值。
final修饰符确保分配给接口变量的值是无法重新分配的真实常量。换句话说,接口只能声明常量,而不能声明实例变量。
interface interfaceName{ //任意数量的最终静态变量 datatype variableName = value; //任意数量的抽象方法声明 returntype methodName(list of parameters or no parameters); }
问题内容: 为什么默认情况下接口变量是静态变量和最终变量? 问题答案: 从Philip Shaw的Java接口设计常见问题解答中: 接口变量是静态的,因为无法单独实例化Java接口。必须在没有实例的静态上下文中分配变量的值。final修饰符确保分配给接口变量的值是一个真正的常量,不能由程序代码重新分配。
问题内容: 我已经在Google上进行了广泛的搜索,但均无济于事。我似乎无法将这个概念笼罩在脑海中。为什么本地班级会接受静态最终字段?如下面的以下示例: 在EnglishGoodbye课堂上,允许告别可变吗?为什么?我很困惑。为什么允许但没有静态变量?我知道为什么它不能访问封闭范围的成员,除非它们是一个编译器时间常数,因为当函数结束时这些变量不再存在,但类可能不存在。对?我只是对此感到困惑。 谢谢
问题内容: 我有一个带有静态实例的android java类,其中包含一个用户信息。但是,在极少数情况下,当用户使用我的应用程序时,该静态实例中的变量之一会在一段时间后变为null。该Java类是全局的(未附加到任何活动)。是什么原因造成的? 编辑:该变量永远不会更改,除非在应用程序启动期间。我已经检查过调用它的函数永远不会被调用一次以上(adb logcat证明了当我添加一条日志表明正在被调用时
问题内容: 请参考下面的代码。运行代码时,我可以更改最终非静态变量的值。但是,如果我尝试更改最终静态变量的值,则会抛出异常。 我的问题是,为什么在非静态最终变量也不会抛出异常,反之亦然。为什么会有所不同? 问题答案: 该解决方案并非没有缺点,它可能无法在所有情况下都有效: 如果在字段声明中将字段初始化为编译时常量,则对该字段的更改可能不可见,因为该最终字段的使用会在编译时用编译时常量替换。 另一个
问题内容: 我读了这个问题不可变对象,并留下了关于不可变对象,并最终场一个问题: 为什么我们需要不可变类中的实例变量为最终变量? 例如,考虑以下不可变的类: 如果在上面的代码中没有set方法,而实例变量仅在构造函数中设置,为什么要求将实例变量声明为final? 问题答案: 有没有 要求 这样做的变量。但是,当您确实明确打算永远不更改变量时,通常这样做是一种好习惯,因为这不仅可以使变量避免错别字或其
问题内容: 我是一位Java程序员,对公司领域来说是新手。最近,我已经使用Groovy和Java 开发了一个应用程序。我编写的所有代码都使用了大量的静态变量。高级技术人员要求我减少使用的静电数量。我已经在谷歌上搜索了相同的内容,并且发现许多程序员都反对使用静态变量。 我发现静态变量更易于使用。而且我认为它们也是有效的(如果我错了,请纠正我),因为如果我必须对一个类中的一个函数进行10,000次调用