我有一个 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/