java构造函数会话(字符串,int)不可见
我有一个包含类文件会话的jar。班我导入了我想要使用的所有jar和这个类。我的代码如下:
public AgentInfo[] getInfo(){
try {
session = new Session(host,port);
}
}
这里我得到了一个错误
The constructor Session(String,int) is not visible
你可以在下面搜索框中键入要查询的问题!
我有一个包含类文件会话的jar。班我导入了我想要使用的所有jar和这个类。我的代码如下:
public AgentInfo[] getInfo(){
try {
session = new Session(host,port);
}
}
这里我得到了一个错误
The constructor Session(String,int) is not visible
# 1 楼答案
构造函数可能不是公共的,如果您让源代码公开或使用其他构造函数。oor如果没有可见的构造函数,那么就有一些用于创建实例的工厂
# 2 楼答案
由于您可以访问zip文件中的类文件,因此可以在IDE中查看它或在其上运行
javap
可能有一个静态工厂方法返回该类或相关类中的某个会话对象。这在有多种类型的会话可用的情况下很常见
# 3 楼答案
构造函数很可能是私有的或受保护的,或仅用于包访问。您确定需要使用该类吗?可能有更适合的派生类(或者应该扩展该类)
# 4 楼答案
这表明
Session(String, int)
构造函数不是公共的。例如,可以这样声明:而不是
(当然,它可能是受保护的,甚至是最终的。)
如果您可以更改
Session
并希望,则可以将构造函数公开。如果您无法更改它(例如,它是第三方类),您应该查看可用的构造函数,并检查返回Session
、工厂类(例如SessionFactory
)等的静态方法。通常,文档是了解如何获得类实例的良好开端:)