构造函数Session(String,int)不可见

时间:2011-07-29 09:48:52

标签: java

我有一个包含类文件Session.class的jar。我导入了所有jar和我要使用的这个类。在我的代码中如下:

public AgentInfo[] getInfo(){
    try {   
        session = new Session(host,port);
    }
}

我在这里收到错误

 The constructor Session(String,int) is not visible

4 个答案:

答案 0 :(得分:3)

这表明Session(String, int)构造函数不公开。例如,可能会这样声明:

Session(String host, int port)

而不是

public Session(String host, int port)

(当然,它可能受到保护甚至是最终的。)

如果您可以更改Session 并希望,则可以将构造函数设为公开。如果您无法更改它(例如,它是第三方类),您应该查看 可用的构造函数,并检查返回Session,工厂类的静态方法(例如{{ 1}})等等。通常,文档是一个很好的开始,可以找出你是如何获取类的实例的。:)

答案 1 :(得分:1)

构造函数很可能是私有的或受保护的或仅包访问。你确定你需要使用那门课吗?可能有更适合的派生类(或者应该扩展类)

答案 2 :(得分:0)

构造函数可能不公开,如果你有源公开或使用其他构造函数。如果没有可见的构造函数,则有一些用于创建实例的工厂

答案 3 :(得分:0)

由于您可以访问zip文件中的类文件,因此可以在IDE中查看它或在其上运行javap

有可能静态工厂方法在该类或相关类中的某处返回会话对象。这种情况在有许多类型的会话可用的情况下很常见。