您可以在Java接口中声明常量的目的是什么?

Ale*_*lex 17 java oop interface

规范规定,界面旨在定义合同什么类可以做,并包含了一组以实现所需的方法.但与此同时,界面可能有常量.

出于什么目的,Java中允许它?

接口中常量的存在点是什么,它们如何在其中使用?据我所知,他们只能被方法视为参数.但是我没有看到太多意义,因为接口没有说明如何实现其方法.

Tec*_*ton 11

常量也是接口的一部分.在设计中使用常量值来避免幻数,即对实现具有某种意义的数字,但似乎突然出现.

在许多情况下,数值会影响代码的行为.例如,考虑GUI按钮的界面.如何实际绘制此按钮取决于实现; 但它是什么样的按钮是形成界面的合同的一部分:它是一个普通的按钮,它有一个图像,还是一个复选框?可以使用OR'ing值常用的常量修改此行为:例如,int buttonType = PUSHBUTTON|IMAGEBUTTON.

  • 注意(从Java 5开始)接口也可以声明一个`enum`,它通常更适合行为修改,因为它不允许任何非声明的选项并且是类型安全的.如果一个方法(甚至是内部的)是`setButtonType(EnumSet <ButtonType> types)`,那就是常量方法`setButtonType(int typesMask)`. (2认同)
  • 枚举通常不适合配置键.例如,当您要从属性文件中检索特殊属性时.那些通常是字符串,因此不使用绕过枚举. (2认同)