我正在使用一个Java类库,它在很多方面都不完整:有很多类我觉得应该增加额外的成员函数。然而,我不确定添加这些成员函数的最佳实践方法。
让我们称这个不足的基类为
我认为它们都有优缺点。第一种选择比第二种选择具有更干净的语法,更加合理,但是存在问题:假设我在类库中有第三个类
让我们称这个不足的基类为
A
。class A
{
public A(/*long arbitrary arguments*/)
{
//...
}
public A(/*long even more arbitrary arguments*/)
{
//...
}
public int func()
{
return 1;
}
}
理想情况下,我想给A
添加一个功能。但是我不能这样做。我的选择在于:
class B extends A
{
//Implement ALL of A's constructors here
public int reallyUsefulFunction()
{
return func()+1;
}
}
并且
class AddedFuncs
{
public static int reallyUsefulFunction(A a)
{
return a.func()+1;
}
}
我认为它们都有优缺点。第一种选择比第二种选择具有更干净的语法,更加合理,但是存在问题:假设我在类库中有第三个类
C
。class C
{
public A func()
{
return new A(/*...*/);
}
}
我认为,没有简单的方法可以做到这一点:
C c;
int useful = c.func().reallyUsefulFunction();
因为 C.func()
返回的类型是 A
,而不是 B
,所以你无法进行向下转型。
那么,在只读库类中添加成员函数的最佳方法是什么?