小序言。我是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#中说,我可以通过简单的部分解决问题:(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??