class base {
public <type> a;
}
class derived extends base {
...
public void dMethod() {
a.method();
}
...
}
snippt来自我在项目中使用的包A. derived
会看到基座中的a
,因此可以使用它。
但是当我运行mvn clean install
来打包我的项目时,它会抱怨它无法找到
派生类中的符号a(我已经依赖添加了包A)。
它出了什么问题?
修改
我在我的项目中使用了这样的代码:
class my {
derived d = new derived();
d.a.method();
...
}
它在日食中运行良好,但是当我打包它时,它会抱怨。
method()
确实有public
修饰符。
答案 0 :(得分:2)
公共属性或方法随处可见。
由于a
是公共的,您可以从派生类(或代码中的任何其他类)访问它。
但是,即使a
是公开的,也不会使其方法公开。如果您在调用a.method()
时遇到问题,那是因为method
在您的上下文中不可见(它可能是私有的,受保护的或具有包可见性)。
解决方案是检查方法a.method()
,如果可以,可以将其更改为公开。或者也许对象a
的意思不同。
答案 1 :(得分:0)
method()应该有一个public(或者在这种情况下受保护也可以)标识符... 在'a'上公开标识符并不公开其所有字段和方法。