简要介绍一下,我曾经是1.4 jdk的优秀Java开发者。之后我转向了其他平台,但现在我又遇到了问题,因此这个问题与jdk 1.6(或更高版本 :))有关。我有3个耦合类,耦合的本质涉及本地方法。下面是这3个类的示例:
public interface A
{
public void method();
}
final class AOperations
{
static native method(. . .);
}
public class AImpl implements A
{
@Override
public void method(){
AOperations.method( . . . );
}
}
存在一个接口A,由AOperations以本地方式实现,而AImpl只是将方法调用委托给本地方法。
这些关系是自动生成的。一切都很好,但我面临问题。有时候像A这样的接口需要公开迭代器能力。我可以影响接口,但无法改变实现(AImpl)。
如果用C#来说,我可以通过简单的partial解决问题:
(C#样例)partial class AImpl{
... //here comes auto generated code
}
partial class AImpl{
... //here comes MY implementation of
... //Iterator
}
那么,Java有部分函数或类似的东西吗?
编辑:根据@pgras的评论,我需要一些澄清。AImpl不是孤立存在的,有一个工厂(本地实现)返回AImpl的实例,因此从AImpl继承创建不适用。
编辑2:也许这与之无关,但JUnit 4是如何实现的:
public class SomeTest {
...
//there is no direct inheritance from Assert, but I can use follow:
assertTrue(1==1); //HOW DOES it works??
assertTrue
是Assert
中的一个静态方法。在某个地方会有类似于import static org.junit.Assert.*
的导入语句。由于它全部都是静态的,所以这并没有什么帮助。 - Chris