重载库类构造函数

时间:2011-12-21 10:50:01

标签: java constructor overloading

我正在处理以下问题。我正在使用一个库,并希望重载该库中的类的构造函数以更好地满足我的需求。库类提供了这样的构造函数:

public SomeName(int variable) {...}

我希望能够致电

public SomeName(int variable, float myVariable) {...}

为此创建工厂似乎是一种矫枉过正,有一种简单的方法可以做到这一点吗?

4 个答案:

答案 0 :(得分:3)

如果不改变图书馆,就不能这样做。

答案 1 :(得分:3)

该类的子类并添加新的构造函数:)

答案 2 :(得分:3)

Java语言不提供任何高级构造,允许您在不改变类代码本身的情况下更改超类的构造函数。

那就是说,有其他选择。主要是,您可以使用cglib将字节码“注入”到库中并创建自己的构造函数(通过几种高级技术)。

对于大多数编码任务而言,这绝对是推荐,并且是您问题的最佳解决方案(假设您没有做一些非常重要的事情),只是对该类进行子类化:

class SomeName {
    public SomeName(int variable) {
        ...
    }
}

class OtherName extends SomeName {
    public OtherName(float otherVariable) {
        this(*DEFAULT*, otherVariable);
    }

    public OtherName(int variable, float otherVariable) {
        super(variable);
        ...
    }
}

答案 3 :(得分:1)

extend该类并创建一个新的构造函数,因为如果不改变lib就不能这样做。