【发布时间】:2010-05-03 21:01:17
【问题描述】:
我使用的 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,所以不能向下转换。
那么将成员函数添加到只读库类的最佳方法是什么?
【问题讨论】:
-
@Eric:通常在 Java 中,函数被称为“方法”,即使它们是函数 :)
标签: java function casting class