java - 如何从(默认包)访问包中的非静态类字段?

标签 java package class-visibility

所以我有这个类(我们称之为“A”)和这个 get() 方法,该方法返回一个类字段,并且我想从另一个类(“B”)访问它。 重要提示:这两个类都是抽象这些类位于同一个中(所有包为私有(private)) AB 成员)。 Main 类没有包(或者更好的是默认包)。

[之前:扭曲且无用的描述]

我需要从 B 类访问 Aget() 方法。

尝试过:

1) 从位于 main 的根对象开始非静态调用 Aobj.get(),但它似乎想要静态调用(奇怪,没有成员是静态);

2)尝试静态访问它,但我得到了无法对非静态字段进行静态引用错误(当然)。

...所以我陷入困境,仍然遇到访问语法错误,我尝试了两种方法。有什么建议吗?

编辑:

所以我就结束了。我现在将尝试解释我的错误。

基本上,问题是我想从包中的类访问位于 Main 类(默认包)中的对象。所以我遇到了可见性问题。

在其他情况下,我会解决导入该类的问题,但我发现 you cannot import a class located in the default package ,所以我创建了一个 main 包,并在 B 类中导入了 Main 类。

我一直犯的最严重的错误是认为我必须访问 main.main(String[])...等...Aobj 开始来自 main 本身,这是一个非常非常糟糕的想法(仍然无法弄清楚我是如何想的)。

事实上,正如 Stephen C 指出的那样:

The is true irrespective of the situation with packages, and irrespective of the path you take through other classes.

最后,代码示例......说实话,现在的代码与我写这个问题的时候真的很不一样,而且说实话,我无法重现错误的条件,因为我不记得我所有的错误逻辑。正在努力实现。 (我的错。)我只想这次能正确地解释自己。

感谢大家的帮助。

最佳答案

如果 B 的 get() 方法不是 static,那么如果您想调用该方法,则需要 B 的实例;例如

  B b = ....
  b.get();

无论包的情况如何,无论您通过其他类等采取的路径如何,这都是正确的。 (虽然我不确定我完全理解你对所有这些的“散文”描述......)

关于java - 如何从(默认包)访问包中的非静态类字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38407391/

相关文章:

java - Windows 控制台重定向

struct - 从另一个包和文件 golang 导入结构

java - 计算百分比 "x/y * 100"总是得到 0?

Java:获取主应用程序的资源路径而不是jar的资源路径

node.js - 使用 webpack 创建 npm 包

c# - 使用内部类型(C#)声明公共(public)类方法时出现不一致的可访问性错误?

C++访问嵌套类的私有(private)成员

java - Java中包私有(private)类的改进

java - 无法从 Google Plus 访问用户的个人资料

java - 从另一个包加载类文件时出现问题