Piccolo preambolo. Ero un buon sviluppatore java su 1.4 jdk. Dopo di esso sono passato a un'altra piattaforma, ma qui arrivo con un problema quindi la domanda è fortemente su jdk 1.6 (o superiore :)). Ho 3 classi accoppiate, la natura dell'accoppiamento riguarda i metodi nativi. Bellow è esempio di questa classe di 3classi parziali java
public interface A
{
public void method();
}
final class AOperations
{
static native method(. . .);
}
public class AImpl implements A
{
@Override
public void method(){
AOperations.method(. . .);
}
}
Quindi non v'è l'interfaccia A, che è implementato in maniera nativa dal AOperations, e AImpl soli delegati chiamata di metodo a metodi nativi. Queste relazioni sono generate automaticamente. Tutto ok, ma ho problemi prima. A volte un'interfaccia come A ha bisogno di esporre la capacità di iteratore. Posso influire sull'interfaccia, ma non posso modificare l'implementazione (AImpl).
Dire in C# che potrebbe essere in grado problema risolvere con una semplice parziale: (# campione C)
partial class AImpl{
... //here comes auto generated code
}
partial class AImpl{
... //here comes MY implementation of
... //Iterator
}
Quindi, ha java analogo parziale o qualcosa di simile.
MODIFICATO: In base al commento di @pgras ho bisogno di qualche chiarimento. AImpl non è nel vuoto, c'è una fabbrica (implementata nativa) che restituisce l'istanza di AImpl, ecco perché la creazione dell'ereditarietà da AImpl non è applicabile.
modificato 2: Può essere che non riguarda, ma come si è fatto da 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' è un metodo statico in' Assert'. Ci sarà un 'import static org.junit.Assert. * 'O simili da qualche parte. Dato che è tutto statico, non sarà di grande aiuto. – Chris