java - 无法访问公共(public)类中公共(public)静态类的公共(public)成员(全部在单独的 jar 中)

标签 java android

好吧,这是一个满口的标题。不过,这让我明白了。这是我的代码的要点,在 jar 里:

public class NetworkShared {
    public static class LoginRequest {
        public String Username;
        //...

然后,为了访问它,我正在做这样的事情:

NetworkShared.LoginRequest request = new NetworkShared.LoginRequest();
request.Username = "example"; //this is the problem line

当我尝试访问 request.Username 时遇到了问题。 Eclipse 表示字段 NetworkShared.LoginRequest.Username 不可见。我很困惑,因为它一直是公开的。 Java 不是我的主要语言,所以我可能会遗漏一些东西。有人知道吗?

编辑:我可能会在 Android 上添加这个。 NetworkShared 在其自己的 JAR 中,我已将其添加到构建路径中。除了访问 request.Username 之外没有其他错误。

最佳答案

结论:这似乎是引用 JAR 的 Eclipse 刷新问题。

它应该可以工作。顶级类是隐式的 static 所以基本上 NetworkShared.LoginRequest 是识别 LoginRequest 类的正确方法。您的做法是正确的。

我的回答不是针对您的 eclipse 问题——而是针对您的 Java 问题——所以至少您可以消除与 Java 相关的担忧。

除了您的 eclipse 可能有一个错误(也不是第一个)这一事实之外,您能否在您的 eclipse 中编译以下代码?您可能已将原始代码精简为实际可用的代码。

NetworkShared.java

public class NetworkShared {
    public static class LoginRequest {
        public String Username;
    }
}

测试.java

public class Test {
    public static void main(String[] args) {
        NetworkShared.LoginRequest o = new NetworkShared.LoginRequest();
        o.Username = null;
    }
}

关于java - 无法访问公共(public)类中公共(public)静态类的公共(public)成员(全部在单独的 jar 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381743/

相关文章:

java - 无法显示计算结果

java - 奇怪的 Java SQL 时间戳日历检索行为 - 从日历中获取毫秒?

java - ClassNotFoundException : javax. wsdl.extensions.ExtensibilityElement 错误

java - FreeTTS mbrola 无法找到路径

java - 为什么要求我将 xml 中的字符串设置为 @string 引用?

android - 将 .so 文件添加到 Cordova 插件

java - 如何在应用程序中放置市场链接?

android - 更改 NumberPicker 的文本颜色

android - 如何知道当前屏幕是Android中的全屏模式

java - 如何在纵向和横向时更改 UI