Java Interface 是常量存放的最佳地点吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Interface 是常量存放的最佳地点吗相关的知识,希望对你有一定的参考价值。

不一定吧,要看你具体的用法,一般Interface是会被用来implement的,如果你定义的常量是所有implement此接口的类都需要用到的,当然是最好了,如果有些常量只有特定的类会用到,那还是放到特定类里比较好 参考技术A 由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量。因而interface通常是存放常量的最佳地点。然而在java的实际应用时却会产生一些问题。
问题的起因有两个,第一,是我们所使用的常量并不是一成不变的,而是相对于变量不能赋值改变。例如我们在一个工程初期定义常量∏=3.14,而由于计算精度的提高我们可能会重新定义∏=3.14159,此时整个项目对此常量的引用都应该做出改变。第二,java是动态语言。与c++之类的静态语言不同,java对一些字段的引用可以在运行期动态进行,这种灵活性是java这样的动态语言的一大优势。也就使得我们在java工程中有时部分内容的改变不用重新编译整个项目,而只需编译改变的部分重新发布就可以改变整个应用。

java中接口interface可以持有多个类的共享常量

3.接口持有多个类的共享常量 (视频下载) (全部书籍)

接口另一主要功能,马克-to-win: 可以使用接口来引入多个类的共享常量。所有的这些变量名都将作为常量看待。所有定义在接口中的常量都默认为public、static和final。原因见后面。

下面的例子当中,如果Server回答的结果是0或1,程序可读性太差,效果绝对没有YES或NO好。所以就把YES和NO放到了Client和Server的共同的接口ConstantbaseM_to_win当中。

 

note: the following example class Client and Server use the constants like NO and Yes at the same time, so, they define the constants in the interface of ConstantbaseM_to_win.

例1.3:

interface ConstantbaseM_to_win {
    static int NO = 0;
    int YES = 1;
}
class Server implements ConstantbaseM_to_win {
    int answer() {
        //通过其他渠道知道,今天不下雨
        return NO;
    }
}
class Client implements ConstantbaseM_to_win {
    static void ask(int result) {
        switch (result) {
        case NO:
            System.out.println("不下雨");
            break;
        case YES:
            System.out.println("下雨");
            break;
        }
    }
}
public class Test {
    public static void main(String args[]) {
        Client c = new Client();
。。。。。。。。。。。。。。。。。
详情请进:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/JavaBeginner4_web.html#InterfaceHoldConstants

以上是关于Java Interface 是常量存放的最佳地点吗的主要内容,如果未能解决你的问题,请参考以下文章

Java Interface 是常量存放的最佳地点吗

java接口

Java中常量定义在interface和class的区别(转)

java里的interface接口类怎么用

java中接口interface可以持有多个类的共享常量

Java中定义常量方法及建议(Class/Interface)