小序言。我是1.4 jdk上的優秀java開發人員。之後,我已經切換到另一個平臺,但在這裏,我帶着問題來解決問題,所以問題強烈的關於jdk 1.6(或更高版本:))。我有3個耦合類,與本地方法有關的耦合性質。貝婁例如,這3類java部分類
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實現,剛剛的AIMP1委託方法調用本地方法。 這些關係是自動生成的。一切都好,但我有問題。有時界面像A需要公開迭代器的能力。我可以影響接口,但不能更改實現(AImpl)。
在C#中,說我可以通過簡單的局部解決能力問題: (C#示例)
partial class AImpl{
... //here comes auto generated code
}
partial class AImpl{
... //here comes MY implementation of
... //Iterator
}
所以,有部分或類似java的模擬。
EDITED: 根據由@pgras我需要澄清一些評論。 AImpl不是真空,有一些工廠(本地實現)返回AImpl的實例,這就是爲什麼從AImpl創建繼承不適用的原因。
組織編寫: 可能是它不涉及,但它是如何通過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 2010-03-23 17:07:06