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

Java Interface 是常量存放的最佳地点吗?
Java/l-Java-Interface/index.shtml#author1">bright (brightsee@21cn.com)

由于Java Interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量。因而Interface通常是存放常量的最佳地点。然而在Java的实际应用时却会产生一些问题。

问题的起因有两个,第一,是我们所使用的常量并不是一成不变的,而是相对于变量不能赋值改变。例如我们在一个工程初期定义常量∏=3.14,而由于计算精度的提高我们可能会重新定义∏=3.14159,此时整个项目对此常量的引用都应该做出改变。第二,Java是动态语言。与c++之类的静态语言不同,Java对一些字段的引用可以在运行期动态进行,这种灵活性是Java这样的动态语言的一大优势。也就使得我们在Java工程中有时部分内容的改变不用重新编译整个项目,而只需编译改变的部分重新发布就可以改变整个应用。

讲了这么多,你还不知道我要说什么吗?好,我们来看一个简单的例子:

有一个Interface A,一个class B,代码如下:

时间: 2024-10-25 17:20:17

Java Interface 是常量存放的最佳地点吗?的相关文章

深入理解Java虚拟机:JVM高级特性与最佳实践

目 录 [ - ] <深入理解Java虚拟机:JVM高级特性与最佳实践>前言 <深入理解Java虚拟机:JVM高级特性与最佳实践>内容特色 <深入理解Java虚拟机:JVM高级特性与最佳实践>目录 第1章 走近Java 1.1 概述 1.2 Java技术体系 1.3 Java发展史 1.4 展望Java技术的未来 1.4.1 模块化 1.4.2 混合语言 1.4.3 多核并行 1.4.4 进一步丰富语法 1.4.5 64位虚拟机 1.5 实战:自己编译JDK 1.5.1

java怎样用常量接收集合中的信息?

问题描述 java怎样用常量接收集合中的信息? java怎样用常量接收集合中的信息?需求是:用for循环将座位牌号以"1-1"的形式输出,将这些信息放到集合中,选择座位牌号的时候判断有没有这个座位<<< 解决方案 首先向list中放值 /*** 将座位号放入ArrayList中* @param row 座位的行数* @param colu 座位的列数* @return 设置好数据的List */ public List setList(int row int colu

初学者-java interface基本问题

问题描述 java interface基本问题 我是初学者,请教大家一个问题: 现在写程序的时候,老师会经常说我们继承这个接口或者实现接口什么的,问题是 接口不是抽象类吗,它里面的方法不都是抽象方法(我理解就是只有一个方法名,里面没有任何功能) 这样的方法不就相当于空吗?我们这么调用有什么用呢? 我的理解哪里有问题,希望大家帮我一下 解决方案 接口是接口 抽象类是抽象类 接口只包含了要实现的功能描述,即规则规范 抽象类则是有部分代码是包含业务逻辑或实现,部分业务如何实现由子类来确定 解决方案二:

java interface的两个经典用法_java

本文为大家分享了java interface的两个经典用法,供大家参考,具体内容如下 1.Java多态接口动态加载实例 编写一个通用程序,用来计算没一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都为3个整数A.B.C的表达式.现有两种工具:Car和Plane,其中Car的速度运算公式为:A+B+C.需要编写三个类:ComputeTime.java,Palne.java,Car.java和接口Common.java.要求在未来如果增加第3中交通工具的时候,不必修改 以前的任何程序,

java中 包里存放的是类名.java 还是类名.class?

问题描述 java中 包里存放的是类名.java 还是类名.class? 问题1 java中 包里存放的是类名.java 还是类名.class? 类名.java文件一定要放在所 属包目录下吗? 问题2.见下代码 package packb; public class DemoB { public static void main(String[] args) { System.out.println("Hello World!"); } } package packa; class D

我看到java中有类.常量,那么有对象.常量吗

问题描述 我看到java中有类.常量,那么有对象.常量吗 我看到java中有类.常量,那么有对象.常量吗 这里的常量的本质应该是一个对象吧 解决方案 把一个变量用final修饰他就变成常量了,常量的特点就是只能赋值一次 比如说一年有12个月,不会变化在代码里就是: final int mouth = 12: mouth = 13://这样就会出现编译错误了,不符合语法 变量就是等号左边的,如果是基本类型的就是和值一起保存在栈内存中 如果是引用类型的变量的作用就是指向一个对象的内存地址即栈中的变量

java中的常量为什么不能在try catch语句中赋值?

问题描述 java中的常量为什么不能在try catch语句中赋值? 成员位置声明一个常量,想在try catch 语句中赋值,会报错,不明白为什么会这样 解决方案 常量可以在try catch中赋值的,try这种就相当于一个语句块,只是提供了对异常的处理而已. 解决方案二: try-catch语句try-catch语句匿名类,try-catch语句 解决方案三: java中的常量声明时就需要初始化赋值.常量是始终不变的量,不能改变其常量值 解决方案四: 声明常量时就需要初始化赋值,不然会报错:

JAVA中的常量定义在class中还是interface中比较合理?

本文作者:苏生米沿 java中使用的常量可以集中定义在一个文件中. 有两种解决方案: 1.在Constants.java中定义,每个都要加上 public static final String- 2.直接在接口中定义: static String- 用法都一样,在使用的时候引入这个类(接口),使用即可. 存在区别: 1.类中定义的话,支持动态编译,即修改类之后,只需要替换这一个类文件,即可实现修改的变化.接口中则不行,需要重新编译所有项目再重新启动才好. 2.接口中定义的话,代码量比较少. 我

Java中的常量:如何避免反模式

在应用中,我们往往需要一个常量文件,用于存储被多个地方引用的共享常量.在设计应用时,我也遇到了类似的情况,很多地方都需要各种各样的常量. 我确定需要一个单独的文件来存储这些静态公共常量.但是我不是特别确定是应该用接口还是类(枚举不满足我的需求).我有两种选择: 使用接口,如: package one; public interface Constants { String NAME="name1"; int MAX_VAL=25; } 或 package two; public cla