java - 根据使用库的应用程序更改库中定义的常量变量 [Android-Java]

标签 java android variables constants android-library

我有一个 android 库项目,其中包含 2 个 Android 项目的许多通用代码。

在我的图书馆项目中,我有一个 ContentProvider 实现和一个 Service 实现。

计划是在每个项目中扩展这两个类,并在 Manifest 文件中分别指定它们。

但是我有一个常量如下的类,

public class LiquidContentProviderContract {

    public static String CONTENT_AUTHORITY;

    public static String ANDROID_APPLICATION_TABLE = "androidapp";

    public static Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY);

    public static Uri CONTENT_URI_ANDROID_APPLICATION =
            BASE_CONTENT_URI.buildUpon().appendPath(ANDROID_APPLICATION_TABLE).build();

}

但我想根据我要使用此库的应用程序更改此 CONTENT_AUTHORITY 变量。

执行此操作的最佳方法是什么?支持这种实现的常见设计模式有哪些。

我尝试了以下方法,看看我是否至少能让这个东西发挥作用,

public class Foo{

     public static void main(String []args){

        Newfile.te = "Nothing";

        System.out.println(Newfile.te);

        System.out.println(Newfile.tf);

     }
}

public class Newfile{

  public static String te = "Mango";

  public static String tf= Newfile.te + " Eating";

}

输出是,

Nothing
Mango Eating

但我期待着,

Nothing
Nothing Eating

谢谢

最佳答案

您得到输出的原因是静态初始值设定项在类加载时计算一次。当类加载时,te是mango,因此它将tf分配给Mango Eating并且永远不会被重新计算。类什么时​​候加载?就在第一次使用之前。你想做的事永远不会成功。

说实话,听起来您应该重新考虑您的架构 - 您想要的听起来应该是库的参数而不是静态值。

关于java - 根据使用库的应用程序更改库中定义的常量变量 [Android-Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34779596/

相关文章:

java - 我无法使用java读取MySQL中日期字段为空的记录?

java - 从 Ninite.com 更新后 Eclipse 无法打开

java - 尝试用模块理解 IntelliJ 的项目结构

android - 将应用程序从 Android 模拟器连接到网络

java - 随后的 Socket 连接到网页需要不同的时间

java - 了解 libgdx

linux - shell脚本中变量的引用方式有什么不同吗?

mysql - 在 MySQL 的 LIMIT 子句中使用变量

当请求时,PHP 将 mysql 查询作为变量传递给第二个 php 脚本

Android 未签名应用程序无法安装在设备上