interface中的常量类final修饰的字符串动态赋值

问题描述

我有若干个final 的字符串,字符串的值需要从properties文件中读取,功能对照代码如下所示:public interface Constant {private static final PropertiesUtil propertiesUtil = new PropertiesUtil("api-config.properties");public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); public static final String name= propertiesUtil.getValue("name"); }我上面这样写肯定是编译不通过的。谓知大家有什么好点子来实现我所要的实现呀?

解决方案

问题在于interace只允许出现public & static & fianl类型的属性(propertiesUtil 是private的),为什么不考虑将propertiesUtil 做成单例的?这样就变成了:对于PropertiesUtil:public class PropertiesUtil private static final instance = new PropertiesUtil("api-config.properties"); private PropertiesUtil(String config) { //init codes.} public static PropertiesUtil getInstance() { return instance; }} //end of class对于Interface:public static final String name= PropertiesUtil.getInstance().getValue("name");。。。。 Java中的interface实际上只是一个接口规范,所以定义private类型的变量是没有意义,也是不被允许的。
解决方案二:
interface中不允许有private修饰的成员变量,你可以使用abstract class来代替interface。
解决方案三:
把重复的name去掉 按理说能编译啊(不行换成final class呗)

时间: 2024-10-10 21:24:47

interface中的常量类final修饰的字符串动态赋值的相关文章

php中的Base62类(适用于数值转字符串)_php技巧

Base62类源码: 复制代码 代码如下: class Base62 {     private $string = "vPh7zZwA2LyU4bGq5tcVfIMxJi6XaSoK9CNp0OWljYTHQ8REnmu31BrdgeDkFs";     public function base62_encode($str) {        $out = '';         for($t=floor(log10($str)/log10(62)); $t>=0; $t--)

java-Java 中final修饰的成员变量在创建对象时候会不会被附初值?

问题描述 Java 中final修饰的成员变量在创建对象时候会不会被附初值? 如上所述 Java 中final修饰的成员变量在创建对象时候会不会被附初值? 我看周志明的jvm说在创建对象时候要给所有的内存空间都要初始化为零值(不包括对象头),我就想如果是final类型的会不会被初始化微零值再进行程序员自己编写的赋值语句呢?那样的话是不是就是两次对final变量赋值了? 解决方案 不会自动赋值.不赋值会报错.final修饰成员变量,会强制要求赋上值. 解决方案二: 会,比如int初值就是0 解决方

java中final修饰符实例分析_java

final修饰符: final修饰成员变量必须有程序员显示指定初始值. 类的Field:必须在静态初始化块中或声明该Field时指定初始值. 实例Field:必须在非静态初始块中,声明Field或者构造器中指定初始值. final局部变量:必须由程序员显示初始化. final修饰的基本变量和引用类型变量的区别? final修饰的基本变量:不能对基本变量重新赋值. final修饰的引用变量:只保证这个引用类型所引用的地址不会变,即 一直引用同一个对象,但这个对象完全可以发生改变. 复制代码 代码如

java当中的接口的变量都是final修饰的常量,那么方法的方法是final修饰的吗

问题描述 java当中的接口的变量都是final修饰的常量,那么方法的方法是final修饰的吗 java当中的接口的变量都是final修饰的常量,那么方法的方法是final修饰的吗 final能不能修饰类呢 解决方案 不知道你说的方法的方法是什么 final可以修饰类,但是含义不同,final类表示无法派生. 解决方案二: final可以修饰类,方法,和域, 如果修饰方法, 参考这个博客吧http://blog.csdn.net/zrf1335348191/article/details/501

为什么类中的常量没有同步过来

集测的时候出现原来的功能不好使的情况(把我急死了); 手机号换绑(接口C)后,查询个人信息(接口I),显示的信息还是老的手机号. 后来看日志,发现接口C 和接口I 调用的ip不同,但是两个接口引用的是同一个常量啊? 我就突然想到了修改常量类之后,接口C 没有重新编译的问题. 为了确认这点,我找运维,请他把这两个接口的service  class文件发给我,我使用jd-gui.exe 反编译,发现这两个接口中的ip确实不同.于是我决定找到问题的源头,我详细问了运维部署项目的流程.集测部署流程如下:

java中为什么用final修饰了引用类型,但还是能修改对象,请大神解答下哈

问题描述 java中为什么用final修饰了引用类型,但还是能修改对象,请大神解答下哈 class Person{ String name; int age; Person(){} Person(String name,int age){ this.name=name; this.age=age; } public void ShowInfo(){ System.out.println("姓名:"+this.name+"年龄:"+this.age); } } pub

osconstants-OsConstants.java类中定义了很多常量,但都是用placeholder赋值,为什么这样做

问题描述 OsConstants.java类中定义了很多常量,但都是用placeholder赋值,为什么这样做 Android OsConstants.java定义了许多常量,但是都是用placeholder来赋值的,这些常量的结果将会一样. 为什么要这样做? 解决方案 这些都是预设的,也就是考虑到以后可能会更改,或者考虑到未来可能跨平台.所以没有写死,用占位符表示.但是有时候这种东西一辈子也不会再更改了.但是因为历史原因保留了下来.

java中定义常量方法介绍_java

java没有叫全局变量的东西(有全局变量还叫OO吗?):原因:Java将所有设计都基于对象的基础上.Java的全局变量只能对一个类内部而言.能够在类内的任何地方使用的变量就是全局变量,而只在某个特定的函数或者局部的程序块内使用的变量则是局部变量. 所以:声明为static的变量实质上就是全局变量.当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量. 使用:java中只有static和非static变量,这个属于每个类的,如果需要全局变量比如PI(3

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

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