我有一个包含类文件Session.class的jar。我导入了所有jar和我要使用的这个类。在我的代码中如下:
public AgentInfo[] getInfo(){
try {
session = new Session(host,port);
}
}
我在这里收到错误
The constructor Session(String,int) is not visible
答案 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
。
有可能静态工厂方法在该类或相关类中的某处返回会话对象。这种情况在有许多类型的会话可用的情况下很常见。