`
JavaLuSir
  • 浏览: 18052 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java动态给类中配置常量赋值的三种方法

阅读更多
转载自http://blog.csdn.net/yyaf2013/article/details/17356813

当我们需要给Configuration类中的CONFIG常量第一次使用时动态指定一个值时,而此时我们又不想去修改源代码,那我们有三种方法去实现这种需求。

第一种:使用一个static静态代码块来指定,然后在静态代码块中,我们去动态读取外部的一个Properties文件的值。(最推荐)

import java.util.Properties;  
  
  
/** 
 * 第一种实现方法 
 * @author William 
 * 
 */  
public class Configuration {  
  
    public static final String CONFIG;//常量声明时不马上初始化  
      
    static {  
        Properties properties = new Properties();  
        //把一个properties读进来  
        CONFIG = "properties.getConfig";//通过properties的配置项config来初始化我们的常量config  
    }  
} 


第二种:我们可以配置Java的运行时配置,来指定一个-Dname=value的参数,这样也可以在类内部动态的接受到运行时指定的一个参数。
/** 
 * 第二种实现方法 
 * @author William 
 * 
 */  
public class Configuration {  
  
    public static final String CONFIG;//常量声明时不马上初始化  
      
    static {  
        CONFIG = System.getProperty("CONFIG");//通过系统的-D配置参数name=value形式来拿到这个配置值  
        //如果是eclipse,右键->RUN AS->Run Configurations->arguments->VMarguments 里输入(-DCONFIG=我们想要加入的配置)  
    }  
      
    public static void main(String[] args) {  
        System.out.println(Configuration.CONFIG);  
    }  
}  

第三种:我们还可以读的到系统配置的PATH或者CLASSPATH里面的值,同理,我们也可以配置自己的环境变量,然后在程序中一样也能读到这些配置的环境变量

/** 
 * 第三种实现方法 
 * @author William 
 * 
 */  
public class Configuration {  
  
    public static final String CONFIG;//常量声明时不马上初始化  
      
    static {  
        CONFIG = System.getenv("PATH");//通过System.getenv()方法可以拿到系统环境变量,但我自己指定的环境变量没有取得成功,如果有知道原因的给我留言哈谢谢  
          
    }  
      
    public static void main(String[] args) {  
        System.out.println(Configuration.CONFIG);  
    }  
}  

PS.System.getenv()方法,可以获得自己设定的系统变量,不过,在自己谁的设定过后一定要重启IDE工具,这样才能成功读取到。要不就会只读到一个null。
分享到:
评论

相关推荐

    java简单读取properties配置文件的方法示例

    主要介绍了java简单读取properties配置文件的方法,涉及java针对properties配置的载入及文件属性读取相关操作技巧,需要的朋友可以参考下

    java基础案例与开发详解案例源码全

    3.2.1 Java中的八种基本数据类型34 3.2.2 普及二进制36 3.2.3 进制间转换37 3.2.4 基本数据类型间转换38 3.2.5 数据类型应用实例38 3.2.6 引用数据类型39 3.3 关键字.标识符.常量39 3.3.1 变量命名规范39 3.3.2 ...

    java初学者必看

    最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...

    java范例开发大全源代码

     实例108 给指定字符赋值 145  实例109 插入新的字符 146  实例110 插入新的字符串 146  实例111 获取字符串的子串 147  实例112 删除指定的字符 148  实例113 倒置字符串 149  实例114 去除重复...

    Java语言基础下载

    构造方法在继承中的使用 96 super关键字 97 包装类 97 toString( )方法 100 内容总结 101 独立实践 102 第七章:类的高级特征 103 学习目标 103 static关键字 104 final关键字 106 内部类 106 实例分析 110 抽象类,...

    java范例开发大全

    实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的字符串 146 实例111 获取字符串的子串 147 实例112 删除指定的字符 148 实例113 倒置字符串 149 实例114 去除重复字符 149 实例115 检查是否...

    学通Java的24堂课

    2.5.2 新建java类 36 2.5.3 编写java代码 37 2.5.4 运行java程序 39 2.6 如何开发桌面应用程序 39 2.6.1 新建swing gui窗体 40 2.6.2 向窗体中添加gui控件 41 2.6.3 实现控件的事件监听器 43 2.6.4 运行gui...

    Java范例开发大全 (源程序)

     实例108 给指定字符赋值 145  实例109 插入新的字符 146  实例110 插入新的字符串 146  实例111 获取字符串的子串 147  实例112 删除指定的字符 148  实例113 倒置字符串 149  实例114 去除重复字符 ...

    Java开发技术大全 电子版

    2.5.1三种基本控制结构58 2.5.2表达式语句和空语句59 2.5.3块语句60 2.5.4if~else分支语句61 2.5.5多路分支switch~case语句69 2.5.6当型循环while语句71 2.5.7直到型循环do~while语句72 2.5.8当型循环for...

    java范例开发大全(pdf&源码)

    实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的字符串 146 实例111 获取字符串的子串 147 实例112 删除指定的字符 148 实例113 倒置字符串 149 实例114 去除重复字符 149 实例115 检查是否...

    Java范例开发大全(全书源程序)

    实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的字符串 146 实例111 获取字符串的子串 147 实例112 删除指定的字符 148 实例113 倒置字符串 149 实例114 去除重复字符 149 实例115 ...

    HippoScriptEngine for Java

    HippoScriptEngineFactory提供了两种预定义的引起配置,其中简单引擎不包含函数与循环特性。 安全性 脚本中可以访问的资源完全由脚本的宿主环境控制,未通过脚本上下文环境提供的资源对脚本是不可见的。例如:很多...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。 B .永久弃用的代码段注释掉即可,即不用加任何注释。 C .对于暂时被注释掉,后续...

    android坦克大战原码

    反编的java 都用独立的类取代原码的类中类,匿名类。 虽然对于只使用一次对象值的(通常是监听类),都可以将独立类改为匿名类。但笔者认为, 将一大段匿名类代码放在方法的参数中,会影响阅读性, 倾向于独立类的...

    java程序设计与开发课件

    1.4 Java的3种版本······························ (4) 1.5 Java开发环境概述···························· (4) 1.5.1 JDK的安装、配置和使用·····...

    Java学习笔记-个人整理的

    {8.3}创建线程的两种方法}{123}{section.8.3} {8.4}Runnable}{123}{section.8.4} {8.5}Sleep阻塞与打断唤醒}{124}{section.8.5} {8.5.1}sleep与wait的差异}{124}{subsection.8.5.1} {8.6}IO阻塞}{126}{section....

    易语言程序免安装版下载

    4) 修改静态编译后“读配置项”命令在第三个参数“配置项名称”为空文本时导致程序崩溃的BUG 5) 修改高级选择夹中的组件在窗口载入后强制得到焦点的BUG 6) 修改MYSQL支持库跨静态编译的EXE和DLL传递连接句柄和...

    Oracle 10g 开发与管理

    (三)为变量和常量赋值 57 1.赋值的位置 57 2.赋值方式 57 (四)作用域:可以访问该变量的程序部分 58 7.3 PL/SQL 块中的SQL 语句 58 7.4 使用%TYPE和%ROWTYPE类型的变量 58 1.%Type 59 2.%RowType 59 7.5 复合...

    PHP3程序设计

    10.2.5 在类中定义类 162 10.2.6 引用:所指的值就是我的数据 165 10.2.7 有用的类函数 166 10.3 总结 166 第11章 中场三:生成HTML模块 168 11.1 HTML类的设计目的 168 11.2 生成一个基类 169 11.3 继续进行下一步 ...

Global site tag (gtag.js) - Google Analytics