gpt4 book ai didi

java - 从 Android JAR 访问全局变量

转载 作者:行者123 更新时间:2023-12-01 13:35:09 25 4
gpt4 key购买 nike

我有一个 Android 库项目,由多个 Android 应用程序项目使用。库 jar(具有 .class 文件)附加到项目并位于 lib 文件夹中。

1

我正在尝试将变量 com.utility.Commons.outgoingSIP (字符串)设置为位于 jar 内的变量。

在 Commons.java 中声明:public static String outgoingSIP = "";

2

这是一个代码 fragment :

public void sendMessage(SIPMessage sipMessage, InetAddress receiverAddress, int receiverPort)
throws IOException {
long time = System.currentTimeMillis();
byte[] bytes = sipMessage.encodeAsBytes(this.getTransport());
sendMessage(bytes, receiverAddress, receiverPort, sipMessage instanceof SIPRequest);

Commons.outgoingSIP = receiverAddress.toString();

但是变量永远不会改变。我也在顶部导入了它(导入 com.utility.Commons)。

还附加了库和源代码,否则程序将无法编译:

3

从 jar 内部,我还可以 CTRL + 单击 Commons.outgoingSIP 变量,它将带我到 commons.java。所以 eclipse 知道我在谈论哪个变量。

我错过了什么吗?有人可以给我一些建议吗?

最佳答案

我不确定你是否可以做到这一点 - 也许需要一些反射(reflection)。不过,我确信您不想这样做。

让库依赖全局变量并不是一个好的库接口(interface)。让您的库客户端专门告诉您需要了解什么,而不是依赖可能存在或不存在的全局变量。

根据您的情况,将如下内容添加到您的库中:

public class Config {
private static String _outgoingSIP;
public static void setOutgoingSIP(string sip) { _outgoingSIP = sip; }
public static String getOutgoingSIP() { return _outgoingSIP; }
}

您的客户端将调用 Config.setOutgoingSIP,您的库将使用 Config.getOutgoingSIP

注意 - 您可以将 _outgoingSIP 设为公共(public)静态变量,并让您的库代码直接访问它。我不太喜欢这种方法,但这也许是我的 C# 背景所致。

关于java - 从 Android JAR 访问全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com