有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java构造函数会话(字符串,int)不可见

我有一个包含类文件会话的jar。班我导入了我想要使用的所有jar和这个类。我的代码如下:

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

这里我得到了一个错误

 The constructor Session(String,int) is not visible

共 (4) 个答案

  1. # 1 楼答案

    构造函数可能不是公共的,如果您让源代码公开或使用其他构造函数。oor如果没有可见的构造函数,那么就有一些用于创建实例的工厂

  2. # 2 楼答案

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

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

  3. # 3 楼答案

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

  4. # 4 楼答案

    这表明Session(String, int)构造函数不是公共的。例如,可以这样声明:

    Session(String host, int port)
    

    而不是

    public Session(String host, int port)
    

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

    如果您可以更改Session并希望,则可以将构造函数公开。如果您无法更改它(例如,它是第三方类),您应该查看可用的构造函数,并检查返回Session、工厂类(例如SessionFactory)等的静态方法。通常,文档是了解如何获得类实例的良好开端:)