Java辅助非公共类使用会产生错误“类型不可见”,即使访问的方法在Main类中是公共的

时间:2011-04-28 16:00:03

标签: java class encapsulation public-fields

我有一个Main.java文件:

public class Main{

  private EntityDrawer entityDrawer;

  public void setEntityDrawer(EntityDrawer entityDrawer) {
    this.entityDrawer = entityDrawer;
  }

  public EntityDrawer getEntityDrawer() {
    return entityDrawer;
  }
}

class EntityDrawer {

  private Empleado empleado;  

  public Empleado getEmpleado() {
    return empleado;
  }

  public void setEmpleado(Empleado empleado) {
    this.empleado = empleado;
  }

}

如果我尝试从另一个文件访问,如果我只尝试访问entityManager,它就可以工作:

Main main = new Main();
main.getEntityDrawer(); // NO PROBLEM!

但是如果我尝试从entityManager访问其中一个属性(即使是公共的),它就不起作用:

Main main = new Main();
main.getEntityDrawer().getEmpleado(); // Gives error "The type EntityDrawer is not visible"

我无法理解为什么会发生这种情况,有人能让我对这个问题有所了解吗?...

3 个答案:

答案 0 :(得分:10)

我假设您正在尝试在另一个包中使用包本地类EntityDrawer,这是您无法做到的。

尝试制作课程public

答案 1 :(得分:5)

创建类public或将调用类移动到同一个包。

答案 2 :(得分:2)

我也对此问题感到恼火,我删除了不必要的jar文件,并在类路径中只添加了必需的jar文件。有时,如果你在类路径中放入多余的jar文件会导致jar文件冲突并且会显示错误(例如“类型 org.apache.lucene.index.DirectoryReader 不可见” )。

谢谢。